[media] mceusb: plug memory leak on data transmit
authorJarod Wilson <jarod@redhat.com>
Tue, 24 May 2011 19:44:54 +0000 (16:44 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 11 Jun 2011 12:04:04 +0000 (09:04 -0300)
Hans Petter Selasky pointed out to me that we're leaking urbs when
mce_async_out is called. Its used both for configuring the hardware and
for transmitting IR data. In the tx case, mce_request_packet actually
allocates both a urb and the transfer buffer, neither of which was being
torn down. Do that in the tx callback.

CC: Hans Petter Selasky <hselasky@c2i.net>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/rc/mceusb.c

index 6cf22012079ab6a1f39d1356bd86abb387d5e7e7..06dfe0957b5e1d26ae2d7f61c1c7154e8a47f24e 100644 (file)
@@ -621,6 +621,9 @@ static void mce_async_callback(struct urb *urb, struct pt_regs *regs)
                mceusb_dev_printdata(ir, urb->transfer_buffer, 0, len, true);
        }
 
+       /* the transfer buffer and urb were allocated in mce_request_packet */
+       kfree(urb->transfer_buffer);
+       usb_free_urb(urb);
 }
 
 /* request incoming or send outgoing usb packet - used to initialize remote */