|
@@ -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);
|
|
}
|
|
}
|
|
|
|
|