diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c index a7525234c862..c1e93165efdb 100644 --- a/drivers/firewire/fw-sbp2.c +++ b/drivers/firewire/fw-sbp2.c @@ -293,7 +293,8 @@ sbp2_status_write(struct fw_card *card, struct fw_request *request, spin_lock_irqsave(&card->lock, flags); list_for_each_entry(orb, &sd->orb_list, link) { if (status_get_orb_high(status) == 0 && - status_get_orb_low(status) == orb->request_bus) { + status_get_orb_low(status) == orb->request_bus && + orb->rcode == RCODE_COMPLETE) { list_del(&orb->link); break; } @@ -968,6 +969,8 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done) goto fail_alloc; } + /* Initialize rcode to something not RCODE_COMPLETE. */ + orb->base.rcode = -1; orb->base.request_bus = dma_map_single(device->card->device, &orb->request, sizeof orb->request, DMA_TO_DEVICE);