summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-03-20 10:48:01 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-03-20 10:48:01 -0700
commit45ddfbf9594a344dfecbb320d74636023d813539 (patch)
tree283811a1823faa3ec703c0275ab3e53db3db3d94 /drivers
parentd67e91117d104d98635e1b1623aafb26604cecbb (diff)
parent10a4c735515a5afc317abe4d697a4c95f6d9d764 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: firewire: fix panic in handle_at_packet
Diffstat (limited to 'drivers')
-rw-r--r--drivers/firewire/fw-transaction.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c
index 99529e59a0b..e6f1bda3894 100644
--- a/drivers/firewire/fw-transaction.c
+++ b/drivers/firewire/fw-transaction.c
@@ -736,6 +736,12 @@ fw_core_handle_response(struct fw_card *card, struct fw_packet *p)
break;
}
+ /*
+ * The response handler may be executed while the request handler
+ * is still pending. Cancel the request handler.
+ */
+ card->driver->cancel_packet(card, &t->packet);
+
t->callback(card, rcode, data, data_length, t->callback_data);
}
EXPORT_SYMBOL(fw_core_handle_response);