Messages in this thread Patch in this message | | | Date | Sun, 16 Mar 2008 00:56:41 +0100 (CET) | From | Stefan Richter <> | Subject | [PATCH] firewire: fix panic in handle_at_packet |
| |
This fixes a use-after-free bug in the handling of split transactions. The AT DMA handler of the request was occasionally executed after the AR DMA handler of the response. The AT DMA handler then accessed an already freed packet.
Reported by Johannes Berg <johannes@sipsolutions.net>. http://bugzilla.kernel.org/show_bug.cgi?id=9617
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> --- drivers/firewire/fw-transaction.c | 6 ++++++ 1 file changed, 6 insertions(+)
Index: linux/drivers/firewire/fw-transaction.c =================================================================== --- linux.orig/drivers/firewire/fw-transaction.c +++ linux/drivers/firewire/fw-transaction.c @@ -737,6 +737,12 @@ fw_core_handle_response(struct fw_card * 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); -- Stefan Richter -=====-==--- --== =---- http://arcgraph.de/sr/
| |