Skip to content

Commit dd289fb

Browse files
Vinayak Panetly82
authored andcommitted
HID: usbhid: add safety check at _report
Add device disconnect check in usbhid_get_raw_report() Bug 200000762 Change-Id: Ia56a5ba746ee197a0be967f4cb09e38e44be8a8f Signed-off-by: Vinayak Pane <vpane@nvidia.com> Reviewed-on: http://git-master/r/404650 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Tao Xie <txie@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Thomas Cherry <tcherry@nvidia.com>
1 parent 21e8fe3 commit dd289fb

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

drivers/hid/usbhid/hid-core.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -908,12 +908,21 @@ static int usbhid_get_raw_report(struct hid_device *hid,
908908
unsigned char report_type)
909909
{
910910
struct usbhid_device *usbhid = hid->driver_data;
911-
struct usb_device *dev = hid_to_usb_dev(hid);
912-
struct usb_interface *intf = usbhid->intf;
913-
struct usb_host_interface *interface = intf->cur_altsetting;
911+
struct usb_device *dev;
912+
struct usb_interface *intf;
913+
struct usb_host_interface *interface;
914914
int skipped_report_id = 0;
915915
int ret;
916916

917+
if (test_bit(HID_DISCONNECTED, &usbhid->iofl)) {
918+
pr_err("hid device disconnected\n");
919+
return -ESHUTDOWN;
920+
}
921+
922+
dev = hid_to_usb_dev(hid);
923+
intf = usbhid->intf;
924+
interface = intf->cur_altsetting;
925+
917926
/* Byte 0 is the report number. Report data starts at byte 1.*/
918927
buf[0] = report_number;
919928
if (report_number == 0x0) {

0 commit comments

Comments
 (0)