Re: [PATCH 5.15.y, 5.10.y, 5.4.y, 4.19.y] HID: i2c-hid: remove I2C_HID_READ_PENDING flag to prevent lock-up

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux