• Simon Haggett's avatar
    HID: usbhid: Check HID report descriptor contents after device reset · dc3c78e4
    Simon Haggett authored
    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: default avatarToby Gray <toby.gray@realvnc.com>
    Signed-off-by: default avatarSimon Haggett <simon.haggett@realvnc.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    dc3c78e4
hid-core.c 42.6 KB