[PATCH 0/7] Input: gscps2: cleanups and locking fixes
From: Dmitry Torokhov
Date: Sun Aug 30 2026 - 16:53:06 EST
This series cleans up the PA-RISC GSC PS/2 driver (gscps2) and addresses
several concurrency, locking, and interrupt handling issues.
The series performs code style and structural cleanups, including removing
forward declarations, converting printk calls to dev_* logging helpers,
and simplifying enable/disable handling.
Additionally, it resolves several concurrency, locking, and interrupt
handling issues:
- Protect ps2port_list traversal with RCU and manage port registration in
open/close rather than probe/remove to avoid use-after-free during
device unregistration.
- Protect ring buffer indices with ps2port->lock in read and report
helpers while releasing the lock before calling serio_interrupt().
- Assert and enforce ps2port->lock across gscps2_flush() callers.
- Return IRQ_NONE when no data was handled on shared interrupt lines to
preserve core spurious interrupt detection.
- Serialize concurrent interrupt handlers using a try-lock to guarantee
in-order byte delivery.
- Drop the 6 ms busy-wait and manual interrupt pump on transmit in favor
of standard asynchronous hardware interrupt delivery.
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
---
Dmitry Torokhov (7):
Input: gscps2 - clean up driver code style and structure
Input: gscps2 - use RCU for ps2port_list and manage it in open/close
Input: gscps2 - protect buffer access in read and report helpers
Input: gscps2 - serialize hardware and buffer access in gscps2_flush()
Input: gscps2 - return IRQ_NONE when interrupt is not handled
Input: gscps2 - serialize concurrent interrupt handlers
Input: gscps2 - drop busy-wait and manual interrupt pump on transmit
drivers/input/serio/gscps2.c | 277 ++++++++++++++++++++++---------------------
1 file changed, 139 insertions(+), 138 deletions(-)
---
base-commit: e30626823a406725ce29bc75cb8ec467d3e1e326
change-id: 20260809-gscps2-affec5caa7f9
Thanks.
--
Dmitry