usb: gadget: f_hid: idle uses the highest byte for duration
authorMaxim Devaev <mdevaev@gmail.com>
Tue, 27 Jul 2021 18:58:00 +0000 (21:58 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Jul 2021 06:24:39 +0000 (08:24 +0200)
SET_IDLE value must be shifted 8 bits to the right to get duration.
This confirmed by USBCV test.

Fixes: afcff6dc690e ("usb: gadget: f_hid: added GET_IDLE and SET_IDLE handlers")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Maxim Devaev <mdevaev@gmail.com>
Link: https://lore.kernel.org/r/20210727185800.43796-1-mdevaev@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/f_hid.c

index 8d50c8b..bb476e1 100644 (file)
@@ -573,7 +573,7 @@ static int hidg_setup(struct usb_function *f,
                  | HID_REQ_SET_IDLE):
                VDBG(cdev, "set_idle\n");
                length = 0;
-               hidg->idle = value;
+               hidg->idle = value >> 8;
                goto respond;
                break;