diff options
author | Jiri Kosina <jkosina@suse.cz> | 2007-08-01 12:32:27 +0200 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2007-08-02 13:48:04 +0200 |
commit | 22f675f320f721e9eaa2bbf7b883316b408c6c8f (patch) | |
tree | c9fc673b85a3893115feaeb6bae36745cfecced5 /drivers/hid | |
parent | USB HID: fix memory leak of usbhid_device (diff) | |
download | linux-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.c | 4 |
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); } |