summaryrefslogtreecommitdiffstats
path: root/drivers/firewire/fw-transaction.c
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2007-07-17 02:15:36 +0200
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-07-18 23:53:28 +0200
commit9c9bdf4d50730fd04b06077e22d7a83b585f26b5 (patch)
treea7d78a732aa2502a4e43d5a5c56966b17b51a4c8 /drivers/firewire/fw-transaction.c
parentfirewire: remove bogus check in fw_core_handle_request (diff)
downloadlinux-9c9bdf4d50730fd04b06077e22d7a83b585f26b5.tar.xz
linux-9c9bdf4d50730fd04b06077e22d7a83b585f26b5.zip
firewire: fix memory leak of fw_request instances
Found and debugged by Jay Fenlason <fenlason@redhat.com>. The bug was especially noticeable with direct I/O over fw-sbp2. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Diffstat (limited to 'drivers/firewire/fw-transaction.c')
-rw-r--r--drivers/firewire/fw-transaction.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c
index c4b3417a5dac..3ce8e2fbe15f 100644
--- a/drivers/firewire/fw-transaction.c
+++ b/drivers/firewire/fw-transaction.c
@@ -605,8 +605,10 @@ fw_send_response(struct fw_card *card, struct fw_request *request, int rcode)
* check is sufficient to ensure we don't send response to
* broadcast packets or posted writes.
*/
- if (request->ack != ACK_PENDING)
+ if (request->ack != ACK_PENDING) {
+ kfree(request);
return;
+ }
if (rcode == RCODE_COMPLETE)
fw_fill_response(&request->response, request->request_header,