summary refs log tree commit diff
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
parentcda5ecf80bad94b4113722f037af818e7453dd2d (diff)
downloadlinux-22f675f320f721e9eaa2bbf7b883316b408c6c8f.tar.gz
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.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);
 }