HID: usbhid: Check HID report descriptor contents after device reset
authorSimon Haggett <simon.haggett@realvnc.com>
Tue, 3 Apr 2012 15:04:15 +0000 (16:04 +0100)
committerJiri Kosina <jkosina@suse.cz>
Tue, 3 Apr 2012 22:07:58 +0000 (15:07 -0700)
commitdc3c78e43469063c5bf4b744214508f94c4129f9
tree78fbb32e78761be2fa477f703c3c940017feb6e5
parent72f1367b5e15b80275d3805c9afc961549a12a1e
HID: usbhid: Check HID report descriptor contents after device reset

When a USB device reset occurs, usbcore will refetch the device and configuration
descriptors and compare them with those retrieved before the reset to ensure
that they have not changed. For USB HID devices, this implicitly includes the
HID class descriptor (as this is fetched with the configuration descriptor).
However, the HID report descriptor is not checked again.

Whilst a change in the size of the HID report descriptor will be detected (as
this is held in the class descriptor), content changes to the report descriptor
which do not result in a change in its size will be missed. If a firmware update
were applied to a USB HID device which resulted in such a change to the report
descriptor after device reset, then this would not be picked up by usbhid.

This patch fixes this issue by allowing usbhid to check the contents of the
report descriptor after the device reset, and trigger a rebind of the device
if there is a mismatch.

Reviewed-by: Toby Gray <toby.gray@realvnc.com>
Signed-off-by: Simon Haggett <simon.haggett@realvnc.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/usbhid/hid-core.c