On Mon, Apr 29, 2024 at 05:25:15PM +0200, Nam Cao wrote: > commit 9c0f59e47a90c54d0153f8ddc0f80d7a36207d0e 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@xxxxxxxxx> > Closes: https://lore.kernel.org/r/CA+eeCSPUDpUg76ZO8dszSbAGn+UHjcyv8F1J-CUPVARAzEtW9w@xxxxxxxxxxxxxx > Fixes: 4a200c3b9a40 ("HID: i2c-hid: introduce HID over i2c specification implementation") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Nam Cao <namcao@xxxxxxxxxxxxx> > Signed-off-by: Jiri Kosina <jkosina@xxxxxxxx> > [apply to v4.19 -> v5.15] > Signed-off-by: Nam Cao <namcao@xxxxxxxxxxxxx> > --- > drivers/hid/i2c-hid/i2c-hid-core.c | 8 -------- > 1 file changed, 8 deletions(-) Now queued up, thanks. greg k-h