diff options
author | Jiri Kosina <jkosina@suse.cz> | 2007-08-01 06:32:27 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2007-08-02 07:48:04 -0400 |
commit | 22f675f320f721e9eaa2bbf7b883316b408c6c8f (patch) | |
tree | c9fc673b85a3893115feaeb6bae36745cfecced5 | |
parent | cda5ecf80bad94b4113722f037af818e7453dd2d (diff) |
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>
-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: | |||
877 | usb_free_urb(usbhid->urbin); | 877 | usb_free_urb(usbhid->urbin); |
878 | usb_free_urb(usbhid->urbout); | 878 | usb_free_urb(usbhid->urbout); |
879 | usb_free_urb(usbhid->urbctrl); | 879 | usb_free_urb(usbhid->urbctrl); |
880 | hid_free_buffers(dev, hid); | ||
880 | kfree(usbhid); | 881 | kfree(usbhid); |
881 | fail_no_usbhid: | 882 | fail_no_usbhid: |
882 | hid_free_buffers(dev, hid); | ||
883 | hid_free_device(hid); | 883 | hid_free_device(hid); |
884 | 884 | ||
885 | return NULL; | 885 | return NULL; |
@@ -913,9 +913,9 @@ static void hid_disconnect(struct usb_interface *intf) | |||
913 | usb_free_urb(usbhid->urbin); | 913 | usb_free_urb(usbhid->urbin); |
914 | usb_free_urb(usbhid->urbctrl); | 914 | usb_free_urb(usbhid->urbctrl); |
915 | usb_free_urb(usbhid->urbout); | 915 | usb_free_urb(usbhid->urbout); |
916 | kfree(usbhid); | ||
917 | 916 | ||
918 | hid_free_buffers(hid_to_usb_dev(hid), hid); | 917 | hid_free_buffers(hid_to_usb_dev(hid), hid); |
918 | kfree(usbhid); | ||
919 | hid_free_device(hid); | 919 | hid_free_device(hid); |
920 | } | 920 | } |
921 | 921 | ||