linux-stable/drivers/hid
Nam Cao 21bfca822c HID: i2c-hid: remove I2C_HID_READ_PENDING flag to prevent lock-up
commit 9c0f59e47a upstream.

The flag I2C_HID_READ_PENDING is used to serialize I2C operations.
However, this is not necessary, because I2C core already has its own
locking for that.

More importantly, this flag can cause a lock-up: if the flag is set in
i2c_hid_xfer() and an interrupt happens, the interrupt handler
(i2c_hid_irq) will check this flag and return immediately without doing
anything, then the interrupt handler will be invoked again in an
infinite loop.

Since interrupt handler is an RT task, it takes over the CPU and the
flag-clearing task never gets scheduled, thus we have a lock-up.

Delete this unnecessary flag.

Reported-and-tested-by: Eva Kurchatova <nyandarknessgirl@gmail.com>
Closes: https://lore.kernel.org/r/CA+eeCSPUDpUg76ZO8dszSbAGn+UHjcyv8F1J-CUPVARAzEtW9w@mail.gmail.com
Fixes: 4a200c3b9a ("HID: i2c-hid: introduce HID over i2c specification implementation")
Cc: <stable@vger.kernel.org>
Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
[apply to v4.19 -> v5.15]
Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-05-02 16:17:14 +02:00
..
i2c-hid HID: i2c-hid: remove I2C_HID_READ_PENDING flag to prevent lock-up 2024-05-02 16:17:14 +02:00
intel-ish-hid HID: intel_ish-hid: Add check for ishtp_dma_tx_map 2023-02-06 07:49:37 +01:00
usbhid HID: usbhid: free raw_report buffers in usbhid_stop 2021-10-06 15:31:28 +02:00
Kconfig HID: asus: Add depends on USB_HID to HID_ASUS Kconfig option 2022-01-05 12:34:57 +01:00
Makefile
hid-a4tech.c HID: input: fix a4tech horizontal wheel custom usage 2019-08-29 08:28:40 +02:00
hid-accutouch.c
hid-alps.c HID: alps: Declare U1_UNICORN_LEGACY support 2022-08-25 11:15:18 +02:00
hid-apple.c HID: apple: Add 2021 magic keyboard FN key mapping 2024-02-23 08:12:53 +01:00
hid-appleir.c
hid-asus.c HID: hid-asus: add const to read-only outgoing usb buffer 2023-12-20 15:38:03 +01:00
hid-aureal.c
hid-axff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-belkin.c
hid-betopff.c HID: betop: check shape of output reports 2023-02-06 07:49:39 +01:00
hid-cherry.c
hid-chicony.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-cmedia.c
hid-core.c HID: fix HID device resource race between HID core and debugging support 2023-12-08 08:43:23 +01:00
hid-corsair.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-cougar.c
hid-cp2112.c hid: cp2112: Fix duplicate workqueue initialization 2023-11-20 10:29:19 +01:00
hid-cypress.c HID: cypress: Support Varmilo Keyboards' media hotkeys 2020-12-02 08:48:08 +01:00
hid-debug.c HID: fix HID device resource race between HID core and debugging support 2023-12-08 08:43:23 +01:00
hid-dr.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-elan.c HID: elan: Fix potential double free in elan_input_configured 2022-06-14 16:59:20 +02:00
hid-elecom.c
hid-elo.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-emsff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-ezkey.c
hid-gaff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-gembird.c
hid-generic.c
hid-gfrm.c
hid-google-hammer.c HID: google: add jewel USB id 2023-06-09 10:24:01 +02:00
hid-gt683r.c HID: gt683r: add missing MODULE_DEVICE_TABLE 2021-06-30 08:48:11 -04:00
hid-gyration.c
hid-holtek-kbd.c HID: holtek: fix slab-out-of-bounds Write in holtek_kbd_input_event 2023-10-25 11:16:55 +02:00
hid-holtek-mouse.c HID: holtek: fix mouse probing 2021-12-29 12:20:43 +01:00
hid-holtekff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-hyperv.c HID: hyperv: fix possible memory leak in mousevsc_probe() 2022-11-25 17:40:16 +01:00
hid-icade.c
hid-ids.h HID: apple: Add support for the 2021 Magic Keyboard 2024-02-23 08:12:52 +01:00
hid-input.c HID: add mapping for KEY_ALL_APPLICATIONS 2022-03-08 19:04:09 +01:00
hid-ite.c HID: ite: Only bind to keyboard USB interface on Acer SW5-012 keyboard dock 2020-03-05 16:42:18 +01:00
hid-jabra.c
hid-kensington.c
hid-keytouch.c
hid-kye.c
hid-lcpower.c
hid-led.c HID: hid-led: fix maximum brightness for Dream Cheeky 2022-06-14 16:59:20 +02:00
hid-lenovo.c
hid-lg.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-lg.h
hid-lg2ff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-lg3ff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-lg4ff.c HID: hid-lg4ff: Add check for empty lbuf 2022-12-14 11:28:27 +01:00
hid-lg4ff.h
hid-lgff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-logitech-dj.c
hid-logitech-hidpp.c HID: logitech-hidpp: Fix kernel crash on receiver USB disconnect 2023-10-25 11:16:20 +02:00
hid-magicmouse.c HID: magicmouse: Do not set BTN_MOUSE on double report 2022-11-03 23:52:26 +09:00
hid-mf.c HID: mf: add support for 0079:1846 Mayflash/Dragonrise USB Gamecube Adapter 2021-03-11 14:05:01 +01:00
hid-microsoft.c
hid-monterey.c
hid-multitouch.c HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad 2023-12-20 15:38:02 +01:00
hid-nti.c
hid-ntrig.c
hid-ortek.c
hid-penmount.c
hid-petalynx.c
hid-picolcd.h
hid-picolcd_backlight.c
hid-picolcd_cir.c
hid-picolcd_core.c
hid-picolcd_debugfs.c
hid-picolcd_fb.c
hid-picolcd_lcd.c
hid-picolcd_leds.c
hid-pl.c
hid-plantronics.c HID: plantronics: Additional PIDs for double volume key presses quirk 2023-01-18 11:30:40 +01:00
hid-primax.c
hid-prodikeys.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-quirks.c HID: apple: Add support for the 2021 Magic Keyboard 2024-02-23 08:12:52 +01:00
hid-redragon.c
hid-retrode.c
hid-rmi.c HID: rmi: Check that the RMI_STARTED bit is set before unregistering the RMI transport device 2020-01-04 19:13:00 +01:00
hid-roccat-arvo.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-arvo.h
hid-roccat-common.c
hid-roccat-common.h
hid-roccat-isku.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-isku.h
hid-roccat-kone.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-kone.h
hid-roccat-koneplus.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-koneplus.h
hid-roccat-konepure.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-kovaplus.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-kovaplus.h
hid-roccat-lua.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-lua.h
hid-roccat-pyra.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-pyra.h
hid-roccat-ryos.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-savu.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-roccat-savu.h
hid-roccat.c HID: roccat: Fix use-after-free in roccat_read() 2022-10-26 13:19:41 +02:00
hid-saitek.c HID: saitek: add madcatz variant of MMO7 mouse device ID 2022-11-10 17:46:54 +01:00
hid-samsung.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-sensor-custom.c HID: hid-sensor-custom: set fixed size for custom attributes 2023-01-18 11:30:12 +01:00
hid-sensor-hub.c HID: hid-sensor-hub: Return error for hid_set_field() failure 2021-06-30 08:48:10 -04:00
hid-sjoy.c
hid-sony.c HID: sony: Fix for broken buttons on DS3 USB dongles 2020-06-07 13:17:53 +02:00
hid-speedlink.c
hid-steam.c HID: steam: Prevent NULL pointer dereference in steam_{recv,send}_report 2022-09-05 10:26:33 +02:00
hid-steelseries.c
hid-sunplus.c
hid-tivo.c
hid-tmff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-topseed.c
hid-twinhan.c
hid-uclogic.c HID: check for valid USB device for many HID drivers 2021-12-14 10:18:04 +01:00
hid-udraw-ps3.c
hid-waltop.c
hid-wiimote-core.c
hid-wiimote-debug.c
hid-wiimote-modules.c
hid-wiimote.h
hid-xinmo.c
hid-zpff.c HID: Fix assumption that devices have inputs 2019-11-06 13:06:18 +01:00
hid-zydacron.c
hidraw.c HID: hidraw: fix memory leak in hidraw_release() 2022-09-05 10:26:33 +02:00
uhid.c HID: uhid: Over-ride the default maximum data buffer value with our own 2023-03-22 13:27:12 +01:00
wacom.h HID: wacom: remove the battery when the EKR is off 2023-09-23 10:47:56 +02:00
wacom_sys.c HID: wacom: Do not register input devices until after hid_hw_start 2024-02-23 08:12:56 +01:00
wacom_wac.c HID: wacom: generic: Avoid reporting a serial of '0' to userspace 2024-02-23 08:12:56 +01:00
wacom_wac.h HID: wacom: remove the battery when the EKR is off 2023-09-23 10:47:56 +02:00