[PATCH] usbhid: call report_fixup before comparing descriptors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hid_post_reset checks the stored report descriptor against what is currently
returned by the device. An HID driver's report_fixup method may have changed the stored descriptor, however, creating false positives. These leave some devices nonfunctional after a resume, with a "reset_resume error 1" reported. This patch passes the new descriptor to the driver's report_fixup method, if any, before it
is compared to the stored one.

BugLink: http://bugs.launchpad.net/bugs/1049623
Signed-off-by: Kevin Daughtridge <kevin@xxxxxxxx>
---
--- a/drivers/hid/usbhid/hid-core.c    2012-08-20 10:17:09.000000000 -0700
+++ b/drivers/hid/usbhid/hid-core.c    2012-09-16 18:51:45.381868737 -0700
@@ -1436,6 +1436,10 @@ static int hid_post_reset(struct usb_int
         kfree(rdesc);
         return 1;
     }
+
+    if (hid->driver && hid->driver->report_fixup)
+        rdesc = hid->driver->report_fixup(hid, rdesc, &status);
+
     status = memcmp(rdesc, hid->rdesc, hid->rsize);
     kfree(rdesc);
     if (status != 0) {
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux