]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
xhci: dbgtty: fix device unregister
authorŁukasz Bartosik <ukaszb@chromium.org>
Mon, 8 Dec 2025 13:01:36 +0000 (08:01 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:12:01 +0000 (13:12 +0100)
[ Upstream commit 1f73b8b56cf35de29a433aee7bfff26cea98be3f ]

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>
[ Adjust context ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-dbgtty.c

index 980235169d811eaa67a08584f517ccb4ab827e59..d03eea7beeca0a4c2f93ca1d2208512157888125 100644 (file)
@@ -468,6 +468,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, 0);
        xhci_dbc_tty_exit_port(port);
        port->registered = false;