summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorŁukasz Bartosik <ukaszb@chromium.org>2025-11-19 21:29:09 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-12-07 06:27:39 +0900
commit5cb53ca8e81cc2675446348fe058c25d34a7b2be (patch)
treee7d760ddcd982a87fa3bf10b15a580f5c2ad47a3 /drivers/usb
parent372f1b4029b8aa9627fd8174f26e547a364ab815 (diff)
downloadlinux-5cb53ca8e81cc2675446348fe058c25d34a7b2be.tar.gz
linux-5cb53ca8e81cc2675446348fe058c25d34a7b2be.tar.bz2
linux-5cb53ca8e81cc2675446348fe058c25d34a7b2be.zip
xhci: dbgtty: fix device unregister
commit 1f73b8b56cf35de29a433aee7bfff26cea98be3f upstream. When DbC is disconnected then xhci_dbc_tty_unregister_device() is called. However if there is any user space process blocked on write to DbC terminal device then it will never be signalled and thus stay blocked indifinitely. This fix adds a tty_vhangup() call in xhci_dbc_tty_unregister_device(). The tty_vhangup() wakes up any blocked writers and causes subsequent write attempts to DbC terminal device to fail. Cc: stable <stable@kernel.org> Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver") Signed-off-by: Łukasz Bartosik <ukaszb@chromium.org> Link: https://patch.msgid.link/20251119212910.1245694-1-ukaszb@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/xhci-dbgtty.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-dbgtty.c b/drivers/usb/host/xhci-dbgtty.c
index b7f95565524d..57cdda4e09c8 100644
--- a/drivers/usb/host/xhci-dbgtty.c
+++ b/drivers/usb/host/xhci-dbgtty.c
@@ -550,6 +550,12 @@ static void xhci_dbc_tty_unregister_device(struct xhci_dbc *dbc)
if (!port->registered)
return;
+ /*
+ * Hang up the TTY. This wakes up any blocked
+ * writers and causes subsequent writes to fail.
+ */
+ tty_vhangup(port->port.tty);
+
tty_unregister_device(dbc_tty_driver, port->minor);
xhci_dbc_tty_exit_port(port);
port->registered = false;