summaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2007-08-01 12:32:27 +0200
committerJiri Kosina <jkosina@suse.cz>2007-08-02 13:48:04 +0200
commit22f675f320f721e9eaa2bbf7b883316b408c6c8f (patch)
treec9fc673b85a3893115feaeb6bae36745cfecced5 /drivers/hid
parentUSB HID: fix memory leak of usbhid_device (diff)
downloadlinux-22f675f320f721e9eaa2bbf7b883316b408c6c8f.tar.xz
linux-22f675f320f721e9eaa2bbf7b883316b408c6c8f.zip
HID: Never call hid_free_buffers() when usbhid_device has been freed
We can't call hid_free_buffers() when the underlying usbhid_device has already been freed. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/usbhid/hid-core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 6e7393460ead..0a1f2b52a12f 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -877,9 +877,9 @@ fail:
usb_free_urb(usbhid->urbin);
usb_free_urb(usbhid->urbout);
usb_free_urb(usbhid->urbctrl);
+ hid_free_buffers(dev, hid);
kfree(usbhid);
fail_no_usbhid:
- hid_free_buffers(dev, hid);
hid_free_device(hid);
return NULL;
@@ -913,9 +913,9 @@ static void hid_disconnect(struct usb_interface *intf)
usb_free_urb(usbhid->urbin);
usb_free_urb(usbhid->urbctrl);
usb_free_urb(usbhid->urbout);
- kfree(usbhid);
hid_free_buffers(hid_to_usb_dev(hid), hid);
+ kfree(usbhid);
hid_free_device(hid);
}