This series fixes two PicoLCD locking problems. The first moves output
requests into sleepable context and serializes LED state updates. The
second breaks the last-close/deferred-worker lock dependency using a
private framebuffer update mutex.
The first patch was tested separately with the original syzkaller C
reproducer and bounded concurrent sysfs/UHID-destroy workloads on
PREEMPT_RT. The complete series additionally passed repeated framebuffer
open/write/close and persistent-open framebuffer tests. Pre-fix modules
reproduced the respective failures. Physical hardware, prolonged stress
and suspend/resume have not been tested.
Patch 2's Fixes tag identifies the fbdev change that began draining
deferred work from fb_release() while holding info->lock. Patch 1's Fixes
tag was checked against the upstream transport-conversion diff.
Aveline Noir (2):
HID: picolcd: Move output requests out of spinlocked sections
HID: picolcd: Avoid framebuffer last-close deadlock
drivers/hid/hid-picolcd.h | 4 +++
drivers/hid/hid-picolcd_backlight.c | 7 ++--
drivers/hid/hid-picolcd_core.c | 46 +++++++++++++++---------
drivers/hid/hid-picolcd_fb.c | 56 ++++++++++++++++++-----------
drivers/hid/hid-picolcd_lcd.c | 7 ++--
drivers/hid/hid-picolcd_leds.c | 31 +++++++++-------
6 files changed, 93 insertions(+), 58 deletions(-)
base-commit: 72d3fcf802c45d00b300f25b848a93c3a2bd7c7e
--
2.55.0