Re: [PATCH v2 0/2] HID: picolcd: Fix output-request and framebuffer locking

From: Aveline Noir

Date: Wed Oct 14 2026 - 07:12:01 EST


Hi Jiri, Benjamin,

Just a quick ping on this v2 series. Have you had a chance to take a look?

Both fixes have been tested with QEMU/UHID, though not on physical hardware. I'd appreciate any feedback and would be happy to make changes or run additional tests if needed.

Thanks,
Aveline

On 2026-09-28 18:15 +0200, Aveline Noir wrote:
> 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.
>
> Changes in v2:
> - Address Sebastian Andrzej Siewior's feedback: clarify that the issue
> is not specific to PREEMPT_RT and identify picolcd_data::lock as a
> spinlock_t in patch 1. The code changes are identical to v1.
>
> 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
>