[PATCH v2 00/12] USB: serial: io_edgeport: fixes and sync commands

From: Johan Hovold

Date: Fri Oct 23 2026 - 08:18:31 EST


This series fixes a NULL-deref triggered by syzbot, a memory corruption
and a UAF flagged by Sashiko, and a NULL-deref and a UAF found through
inspection.

Also add the missing serialisation for MCR, drop the modem lines on
hangup and close, and switch to synchronous commands so that operations
are serialised as expected.

Johan


Changes in v2:
- reorder fixes
- add open check to edge_write() to handle tty_wakeup() racing with close()
- use openPending flag to detect stray open responses and move termios
change before fifo corruption fix to allow extending critical section
- fix command URB UAF separately from switch to synchronous commands (new
patch)
- move MCR change after termios change to avoid taking mutex in atomic context
- free command buffers also on successful submission
- specify command timeout in milliseconds rather than jiffies


Johan Hovold (12):
USB: serial: io_edgeport: fix NULL-deref on early status
USB: serial: io_edgeport: fix potential close() use-after-free
USB: serial: io_edgeport: fix potential NULL-deref at open
USB: serial: io_edgeport: move initial termios update to open()
USB: serial: io_edgeport: fix potential fifo corruption
USB: serial: io_edgeport: fix potential use-after-free on disconnect
USB: serial: io_edgeport: serialise MCR accesses
USB: serial: io_edgeport: drop redundant sanity checks
USB: serial: io_edgeport: drop redundant open sanity checks
USB: serial: io_edgeport: deassert DTR/RTS on close() and B0
USB: serial: io_edgeport: replace atomic command allocations
USB: serial: io_edgeport: switch to synchronous commands

drivers/usb/serial/io_edgeport.c | 302 +++++++++++--------------------
1 file changed, 105 insertions(+), 197 deletions(-)

--
2.55.0