Skip to content

Commit 1f988d0

Browse files
committed
Merge tag 'hid-for-linus-2025070502' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid
Pull HID fixes from Jiri Kosina: - Memory corruption fixes in hid-appletb-kbd driver (Qasim Ijaz) - New device ID in hid-elecom driver (Leonard Dizon) - Fixed several HID debugfs contants (Vicki Pfau) * tag 'hid-for-linus-2025070502' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid: HID: appletb-kbd: fix slab use-after-free bug in appletb_kbd_probe HID: Fix debug name for BTN_GEAR_DOWN, BTN_GEAR_UP, BTN_WHEEL HID: elecom: add support for ELECOM HUGE 019B variant HID: appletb-kbd: fix memory corruption of input_handler_list
2 parents 05df919 + 38224c4 commit 1f988d0

File tree

5 files changed

+19
-11
lines changed

5 files changed

+19
-11
lines changed

drivers/hid/hid-appletb-kbd.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -430,16 +430,20 @@ static int appletb_kbd_probe(struct hid_device *hdev, const struct hid_device_id
430430
ret = appletb_kbd_set_mode(kbd, appletb_tb_def_mode);
431431
if (ret) {
432432
dev_err_probe(dev, ret, "Failed to set touchbar mode\n");
433-
goto close_hw;
433+
goto unregister_handler;
434434
}
435435

436436
hid_set_drvdata(hdev, kbd);
437437

438438
return 0;
439439

440+
unregister_handler:
441+
input_unregister_handler(&kbd->inp_handler);
440442
close_hw:
441-
if (kbd->backlight_dev)
443+
if (kbd->backlight_dev) {
442444
put_device(&kbd->backlight_dev->dev);
445+
timer_delete_sync(&kbd->inactivity_timer);
446+
}
443447
hid_hw_close(hdev);
444448
stop_hw:
445449
hid_hw_stop(hdev);
@@ -453,10 +457,10 @@ static void appletb_kbd_remove(struct hid_device *hdev)
453457
appletb_kbd_set_mode(kbd, APPLETB_KBD_MODE_OFF);
454458

455459
input_unregister_handler(&kbd->inp_handler);
456-
timer_delete_sync(&kbd->inactivity_timer);
457-
458-
if (kbd->backlight_dev)
460+
if (kbd->backlight_dev) {
459461
put_device(&kbd->backlight_dev->dev);
462+
timer_delete_sync(&kbd->inactivity_timer);
463+
}
460464

461465
hid_hw_close(hdev);
462466
hid_hw_stop(hdev);

drivers/hid/hid-debug.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3298,8 +3298,8 @@ static const char *keys[KEY_MAX + 1] = {
32983298
[BTN_TOUCH] = "Touch", [BTN_STYLUS] = "Stylus",
32993299
[BTN_STYLUS2] = "Stylus2", [BTN_TOOL_DOUBLETAP] = "ToolDoubleTap",
33003300
[BTN_TOOL_TRIPLETAP] = "ToolTripleTap", [BTN_TOOL_QUADTAP] = "ToolQuadrupleTap",
3301-
[BTN_GEAR_DOWN] = "WheelBtn",
3302-
[BTN_GEAR_UP] = "Gear up", [KEY_OK] = "Ok",
3301+
[BTN_GEAR_DOWN] = "BtnGearDown", [BTN_GEAR_UP] = "BtnGearUp",
3302+
[BTN_WHEEL] = "BtnWheel", [KEY_OK] = "Ok",
33033303
[KEY_SELECT] = "Select", [KEY_GOTO] = "Goto",
33043304
[KEY_CLEAR] = "Clear", [KEY_POWER2] = "Power2",
33053305
[KEY_OPTION] = "Option", [KEY_INFO] = "Info",

drivers/hid/hid-elecom.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ static const __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
8989
break;
9090
case USB_DEVICE_ID_ELECOM_M_DT1URBK:
9191
case USB_DEVICE_ID_ELECOM_M_DT1DRBK:
92-
case USB_DEVICE_ID_ELECOM_M_HT1URBK:
92+
case USB_DEVICE_ID_ELECOM_M_HT1URBK_010C:
93+
case USB_DEVICE_ID_ELECOM_M_HT1URBK_019B:
9394
case USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D:
9495
/*
9596
* Report descriptor format:
@@ -122,7 +123,8 @@ static const struct hid_device_id elecom_devices[] = {
122123
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT4DRBK) },
123124
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) },
124125
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
125-
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) },
126+
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_010C) },
127+
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_019B) },
126128
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
127129
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) },
128130
{ }

drivers/hid/hid-ids.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,8 @@
448448
#define USB_DEVICE_ID_ELECOM_M_XT4DRBK 0x00fd
449449
#define USB_DEVICE_ID_ELECOM_M_DT1URBK 0x00fe
450450
#define USB_DEVICE_ID_ELECOM_M_DT1DRBK 0x00ff
451-
#define USB_DEVICE_ID_ELECOM_M_HT1URBK 0x010c
451+
#define USB_DEVICE_ID_ELECOM_M_HT1URBK_010C 0x010c
452+
#define USB_DEVICE_ID_ELECOM_M_HT1URBK_019B 0x019b
452453
#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D 0x010d
453454
#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C 0x011c
454455

drivers/hid/hid-quirks.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
410410
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT4DRBK) },
411411
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) },
412412
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
413-
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) },
413+
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_010C) },
414+
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_019B) },
414415
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
415416
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) },
416417
#endif

0 commit comments

Comments
 (0)