This is a note to let you know that I've just added the patch titled USB: serial: io_ti: fix another NULL-deref at open to the 4.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: usb-serial-io_ti-fix-another-null-deref-at-open.patch and it can be found in the queue-4.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 4f9785cc99feeb3673993b471f646b4dbaec2cc1 Mon Sep 17 00:00:00 2001 From: Johan Hovold <johan@xxxxxxxxxx> Date: Tue, 3 Jan 2017 16:39:44 +0100 Subject: USB: serial: io_ti: fix another NULL-deref at open From: Johan Hovold <johan@xxxxxxxxxx> commit 4f9785cc99feeb3673993b471f646b4dbaec2cc1 upstream. In case a device is left in "boot-mode" we must not register any port devices in order to avoid a NULL-pointer dereference on open due to missing endpoints. This could be used by a malicious device to trigger an OOPS: Unable to handle kernel NULL pointer dereference at virtual address 00000030 ... [<bf0caa84>] (edge_open [io_ti]) from [<bf0b0118>] (serial_port_activate+0x68/0x98 [usbserial]) [<bf0b0118>] (serial_port_activate [usbserial]) from [<c0470ca4>] (tty_port_open+0x9c/0xe8) [<c0470ca4>] (tty_port_open) from [<bf0b0da0>] (serial_open+0x48/0x6c [usbserial]) [<bf0b0da0>] (serial_open [usbserial]) from [<c0469178>] (tty_open+0xcc/0x5cc) Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Johan Hovold <johan@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/usb/serial/io_ti.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --- a/drivers/usb/serial/io_ti.c +++ b/drivers/usb/serial/io_ti.c @@ -1508,7 +1508,7 @@ stayinbootmode: dev_dbg(dev, "%s - STAYING IN BOOT MODE\n", __func__); serial->product_info.TiMode = TI_MODE_BOOT; - return 0; + return 1; } static int ti_do_config(struct edgeport_port *port, int feature, int on) @@ -2563,14 +2563,18 @@ static int edge_startup(struct usb_seria mutex_init(&edge_serial->es_lock); edge_serial->serial = serial; + INIT_DELAYED_WORK(&edge_serial->heartbeat_work, edge_heartbeat_work); usb_set_serial_data(serial, edge_serial); status = download_fw(edge_serial); - if (status) { + if (status < 0) { kfree(edge_serial); return status; } + if (status > 0) + return 1; /* bind but do not register any ports */ + product_id = le16_to_cpu( edge_serial->serial->dev->descriptor.idProduct); @@ -2582,7 +2586,6 @@ static int edge_startup(struct usb_seria } } - INIT_DELAYED_WORK(&edge_serial->heartbeat_work, edge_heartbeat_work); edge_heartbeat_schedule(edge_serial); return 0; Patches currently in stable-queue which might be from johan@xxxxxxxxxx are queue-4.4/usb-serial-io_ti-fix-i-o-after-disconnect.patch queue-4.4/usb-serial-ti_usb_3410_5052-fix-null-deref-at-open.patch queue-4.4/usb-serial-kobil_sct-fix-null-deref-in-write.patch queue-4.4/usb-serial-spcp8x5-fix-null-deref-at-open.patch queue-4.4/usb-serial-mos7720-fix-parallel-probe.patch queue-4.4/usb-serial-cyberjack-fix-null-deref-at-open.patch queue-4.4/usb-serial-mos7720-fix-null-deref-at-open.patch queue-4.4/usb-serial-garmin_gps-fix-memory-leak-on-failed-urb-submit.patch queue-4.4/usb-serial-io_ti-fix-null-deref-at-open.patch queue-4.4/usb-serial-pl2303-fix-null-deref-at-open.patch queue-4.4/usb-serial-quatech2-fix-sleep-while-atomic-in-close.patch queue-4.4/usb-serial-iuu_phoenix-fix-null-deref-at-open.patch queue-4.4/usb-serial-oti6858-fix-null-deref-at-open.patch queue-4.4/usb-serial-io_edgeport-fix-null-deref-at-open.patch queue-4.4/usb-serial-mos7720-fix-parport-use-after-free-on-probe-errors.patch queue-4.4/usb-serial-mos7720-fix-use-after-free-on-probe-errors.patch queue-4.4/usb-serial-mos7840-fix-null-deref-at-open.patch queue-4.4/usb-serial-omninet-fix-null-derefs-at-open-and-disconnect.patch queue-4.4/usb-serial-keyspan_pda-verify-endpoints-at-probe.patch queue-4.4/usb-serial-io_ti-fix-another-null-deref-at-open.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html