From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754796AbYCOX5w (ORCPT ); Sat, 15 Mar 2008 19:57:52 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753174AbYCOX5n (ORCPT ); Sat, 15 Mar 2008 19:57:43 -0400 Received: from einhorn.in-berlin.de ([192.109.42.8]:49791 "EHLO einhorn.in-berlin.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753071AbYCOX5m (ORCPT ); Sat, 15 Mar 2008 19:57:42 -0400 X-Envelope-From: stefanr@s5r6.in-berlin.de Date: Sun, 16 Mar 2008 00:56:41 +0100 (CET) From: Stefan Richter Subject: [PATCH] firewire: fix panic in handle_at_packet To: linux1394-devel@lists.sourceforge.net cc: linux-kernel@vger.kernel.org, Johannes Berg , Jarod Wilson Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Disposition: INLINE Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 . http://bugzilla.kernel.org/show_bug.cgi?id=9617 Signed-off-by: Stefan Richter --- 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/