This is a note to let you know that I've just added the patch titled ipack: ipoctal: fix tty-registration error handling 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: ipack-ipoctal-fix-tty-registration-error-handling.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 cd20d59291d1790dc74248476e928f57fc455189 Mon Sep 17 00:00:00 2001 From: Johan Hovold <johan@xxxxxxxxxx> Date: Fri, 17 Sep 2021 13:46:19 +0200 Subject: ipack: ipoctal: fix tty-registration error handling From: Johan Hovold <johan@xxxxxxxxxx> commit cd20d59291d1790dc74248476e928f57fc455189 upstream. Registration of the ipoctal tty devices is unlikely to fail, but if it ever does, make sure not to deregister a never registered tty device (and dereference a NULL pointer) when the driver is later unbound. Fixes: 2afb41d9d30d ("Staging: ipack/devices/ipoctal: Check tty_register_device return value.") Cc: stable@xxxxxxxxxxxxxxx # 3.7 Acked-by: Samuel Iglesias Gonsalvez <siglesias@xxxxxxxxxx> Signed-off-by: Johan Hovold <johan@xxxxxxxxxx> Link: https://lore.kernel.org/r/20210917114622.5412-4-johan@xxxxxxxxxx Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/ipack/devices/ipoctal.c | 7 +++++++ 1 file changed, 7 insertions(+) --- a/drivers/ipack/devices/ipoctal.c +++ b/drivers/ipack/devices/ipoctal.c @@ -38,6 +38,7 @@ struct ipoctal_channel { unsigned int pointer_read; unsigned int pointer_write; struct tty_port tty_port; + bool tty_registered; union scc2698_channel __iomem *regs; union scc2698_block __iomem *block_regs; unsigned int board_id; @@ -402,9 +403,11 @@ static int ipoctal_inst_slot(struct ipoc i, NULL, channel, NULL); if (IS_ERR(tty_dev)) { dev_err(&ipoctal->dev->dev, "Failed to register tty device.\n"); + tty_port_free_xmit_buf(&channel->tty_port); tty_port_destroy(&channel->tty_port); continue; } + channel->tty_registered = true; } /* @@ -706,6 +709,10 @@ static void __ipoctal_remove(struct ipoc for (i = 0; i < NR_CHANNELS; i++) { struct ipoctal_channel *channel = &ipoctal->channel[i]; + + if (!channel->tty_registered) + continue; + tty_unregister_device(ipoctal->tty_drv, i); tty_port_free_xmit_buf(&channel->tty_port); tty_port_destroy(&channel->tty_port); Patches currently in stable-queue which might be from johan@xxxxxxxxxx are queue-4.4/ipack-ipoctal-fix-stack-information-leak.patch queue-4.4/ipack-ipoctal-fix-tty-registration-race.patch queue-4.4/ipack-ipoctal-fix-module-reference-leak.patch queue-4.4/usb-serial-option-add-device-id-for-foxconn-t99w265.patch queue-4.4/usb-serial-cp210x-add-id-for-gw-instek-gdm-834x-digital-multimeter.patch queue-4.4/net-hso-fix-muxed-tty-registration.patch queue-4.4/usb-serial-mos7840-remove-duplicated-0xac24-device-id.patch queue-4.4/ipack-ipoctal-fix-missing-allocation-failure-check.patch queue-4.4/ipack-ipoctal-fix-tty-registration-error-handling.patch queue-4.4/usb-serial-option-add-telit-ln920-compositions.patch queue-4.4/usb-serial-option-remove-duplicate-usb-device-id.patch