Re: [syzbot] [usb?] KASAN: slab-use-after-free Write in keyspan_close

From: Edward Adam Davis

Date: Sun Aug 30 2026 - 19:50:56 EST


From: Edward Aadm Davis <eadavis@xxxxxxxx>

#syz test: upstream 08dbfad3f504

diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index 17edc057a311..51359815432a 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -301,11 +301,19 @@ static void serial_port_shutdown(struct tty_port *tport)
struct usb_serial_port *port =
container_of(tport, struct usb_serial_port, port);
struct usb_serial_driver *drv = port->serial->type;
+ struct usb_serial *serial = port->serial;
+
+ mutex_lock(&serial->disc_mutex);
+ if (serial->disconnected) {
+ mutex_unlock(&serial->disc_mutex);
+ return;
+ }

if (drv->close)
drv->close(port);

usb_autopm_put_interface(port->serial->interface);
+ mutex_unlock(&serial->disc_mutex);
}

static void serial_hangup(struct tty_struct *tty)