Ver Fonte

firewire: fw-sbp2: always enable IRQs before calling command ORB callback

On IOMMU-less noncoherent architectures, orb->callback will memcpy the
whole SCSI command buffer for READ-like SCSI commands.  It is therefore
friendlier to enable IRQs before the call, like before patch "Add
ref-counting for sbp2 orbs".

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Acked-by: Kristian Høgsberg <krh@redhat.com>
Stefan Richter há 18 anos atrás
pai
commit
1b34e97441
1 ficheiros alterados com 3 adições e 2 exclusões
  1. 3 2
      drivers/firewire/fw-sbp2.c

+ 3 - 2
drivers/firewire/fw-sbp2.c

@@ -361,11 +361,12 @@ complete_transaction(struct fw_card *card, int rcode,
 		orb->rcode = rcode;
 		orb->rcode = rcode;
 	if (orb->rcode != RCODE_COMPLETE) {
 	if (orb->rcode != RCODE_COMPLETE) {
 		list_del(&orb->link);
 		list_del(&orb->link);
+		spin_unlock_irqrestore(&card->lock, flags);
 		orb->callback(orb, NULL);
 		orb->callback(orb, NULL);
+	} else {
+		spin_unlock_irqrestore(&card->lock, flags);
 	}
 	}
 
 
-	spin_unlock_irqrestore(&card->lock, flags);
-
 	kref_put(&orb->kref, free_orb);
 	kref_put(&orb->kref, free_orb);
 }
 }