aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2007-08-25 04:40:42 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-10-16 18:00:02 -0400
commit1b34e97441384d527c438a6ee597bfc800373bce (patch)
tree2a4bacf54f5615babbf31a850ccc31781620c375
parent930e4b7fe3b4e1c4e14b9c22e4c9c74dc8db75f3 (diff)
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>
-rw-r--r--drivers/firewire/fw-sbp2.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index 238730f75db1..7ecc154a8274 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -361,11 +361,12 @@ complete_transaction(struct fw_card *card, int rcode,
361 orb->rcode = rcode; 361 orb->rcode = rcode;
362 if (orb->rcode != RCODE_COMPLETE) { 362 if (orb->rcode != RCODE_COMPLETE) {
363 list_del(&orb->link); 363 list_del(&orb->link);
364 spin_unlock_irqrestore(&card->lock, flags);
364 orb->callback(orb, NULL); 365 orb->callback(orb, NULL);
366 } else {
367 spin_unlock_irqrestore(&card->lock, flags);
365 } 368 }
366 369
367 spin_unlock_irqrestore(&card->lock, flags);
368
369 kref_put(&orb->kref, free_orb); 370 kref_put(&orb->kref, free_orb);
370} 371}
371 372