diff options
| author | Pan Bian <bianpan2016@163.com> | 2016-12-05 06:37:24 -0500 |
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2016-12-09 07:46:29 -0500 |
| commit | c60fa555b11b25386b355c141d90cbee361c3eec (patch) | |
| tree | 144f457fbc9ebfcb02a4c98a4009fd0f3b402d62 | |
| parent | 2ae3986b84e9d325bc92a1efbcf0c6b0f5016b35 (diff) | |
HID: usbhid: fix improper return value
Function hid_post_reset() should return negative error codes on failures.
However, in its implementation, it incorrectly returns 1. This patch fixes the
bug, returning proper error codes on failures.
Signed-off-by: Pan Bian <bianpan2016@163.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| -rw-r--r-- | drivers/hid/usbhid/hid-core.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index ae83af649a60..333108ef18cf 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
| @@ -1459,7 +1459,7 @@ static int hid_post_reset(struct usb_interface *intf) | |||
| 1459 | rdesc = kmalloc(hid->dev_rsize, GFP_KERNEL); | 1459 | rdesc = kmalloc(hid->dev_rsize, GFP_KERNEL); |
| 1460 | if (!rdesc) { | 1460 | if (!rdesc) { |
| 1461 | dbg_hid("couldn't allocate rdesc memory (post_reset)\n"); | 1461 | dbg_hid("couldn't allocate rdesc memory (post_reset)\n"); |
| 1462 | return 1; | 1462 | return -ENOMEM; |
| 1463 | } | 1463 | } |
| 1464 | status = hid_get_class_descriptor(dev, | 1464 | status = hid_get_class_descriptor(dev, |
| 1465 | interface->desc.bInterfaceNumber, | 1465 | interface->desc.bInterfaceNumber, |
| @@ -1467,13 +1467,13 @@ static int hid_post_reset(struct usb_interface *intf) | |||
| 1467 | if (status < 0) { | 1467 | if (status < 0) { |
| 1468 | dbg_hid("reading report descriptor failed (post_reset)\n"); | 1468 | dbg_hid("reading report descriptor failed (post_reset)\n"); |
| 1469 | kfree(rdesc); | 1469 | kfree(rdesc); |
| 1470 | return 1; | 1470 | return status; |
| 1471 | } | 1471 | } |
| 1472 | status = memcmp(rdesc, hid->dev_rdesc, hid->dev_rsize); | 1472 | status = memcmp(rdesc, hid->dev_rdesc, hid->dev_rsize); |
| 1473 | kfree(rdesc); | 1473 | kfree(rdesc); |
| 1474 | if (status != 0) { | 1474 | if (status != 0) { |
| 1475 | dbg_hid("report descriptor changed\n"); | 1475 | dbg_hid("report descriptor changed\n"); |
| 1476 | return 1; | 1476 | return -EPERM; |
| 1477 | } | 1477 | } |
| 1478 | 1478 | ||
| 1479 | /* No need to do another reset or clear a halted endpoint */ | 1479 | /* No need to do another reset or clear a halted endpoint */ |
