diff options
Diffstat (limited to 'drivers/hid')
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index 03cb494af1c5..f0a0f72238ab 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -102,7 +102,7 @@ static void hid_reset(struct work_struct *work) | |||
102 | struct usbhid_device *usbhid = | 102 | struct usbhid_device *usbhid = |
103 | container_of(work, struct usbhid_device, reset_work); | 103 | container_of(work, struct usbhid_device, reset_work); |
104 | struct hid_device *hid = usbhid->hid; | 104 | struct hid_device *hid = usbhid->hid; |
105 | int rc_lock, rc = 0; | 105 | int rc = 0; |
106 | 106 | ||
107 | if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) { | 107 | if (test_bit(HID_CLEAR_HALT, &usbhid->iofl)) { |
108 | dev_dbg(&usbhid->intf->dev, "clear halt\n"); | 108 | dev_dbg(&usbhid->intf->dev, "clear halt\n"); |
@@ -113,11 +113,10 @@ static void hid_reset(struct work_struct *work) | |||
113 | 113 | ||
114 | else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) { | 114 | else if (test_bit(HID_RESET_PENDING, &usbhid->iofl)) { |
115 | dev_dbg(&usbhid->intf->dev, "resetting device\n"); | 115 | dev_dbg(&usbhid->intf->dev, "resetting device\n"); |
116 | rc = rc_lock = usb_lock_device_for_reset(hid_to_usb_dev(hid), usbhid->intf); | 116 | rc = usb_lock_device_for_reset(hid_to_usb_dev(hid), usbhid->intf); |
117 | if (rc_lock >= 0) { | 117 | if (rc == 0) { |
118 | rc = usb_reset_device(hid_to_usb_dev(hid)); | 118 | rc = usb_reset_device(hid_to_usb_dev(hid)); |
119 | if (rc_lock) | 119 | usb_unlock_device(hid_to_usb_dev(hid)); |
120 | usb_unlock_device(hid_to_usb_dev(hid)); | ||
121 | } | 120 | } |
122 | clear_bit(HID_RESET_PENDING, &usbhid->iofl); | 121 | clear_bit(HID_RESET_PENDING, &usbhid->iofl); |
123 | } | 122 | } |