Skip to content

Commit ce2d78f

Browse files
lucasdemarchigregkh
authored andcommitted
xhci: dbgtty: Fix unregister on tty_alloc_driver() failure
commit 25b8dfc upstream. Make sure to set dbc_tty_driver to NULL to match the check in dbc_tty_exit(). For that, make detached error handling path common to the other branch in the same function. Fixes: 4521f16 ("xhci: dbctty: split dbc tty driver registration and unregistration functions.") Cc: stable@vger.kernel.org # v5.10 Cc: Mathias Nyman <mathias.nyman@linux.intel.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Lucas De Marchi <ldemarchi@nvidia.com> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Link: https://patch.msgid.link/20260806142113.2436238-9-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 43635ff commit ce2d78f

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

drivers/usb/host/xhci-dbgtty.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -597,8 +597,8 @@ int dbc_tty_init(void)
597597
dbc_tty_driver = tty_alloc_driver(64, TTY_DRIVER_REAL_RAW |
598598
TTY_DRIVER_DYNAMIC_DEV);
599599
if (IS_ERR(dbc_tty_driver)) {
600-
idr_destroy(&dbc_tty_minors);
601-
return PTR_ERR(dbc_tty_driver);
600+
ret = PTR_ERR(dbc_tty_driver);
601+
goto fail;
602602
}
603603

604604
dbc_tty_driver->driver_name = "dbc_serial";
@@ -618,11 +618,17 @@ int dbc_tty_init(void)
618618
ret = tty_register_driver(dbc_tty_driver);
619619
if (ret) {
620620
pr_err("Can't register dbc tty driver\n");
621-
tty_driver_kref_put(dbc_tty_driver);
622-
idr_destroy(&dbc_tty_minors);
623-
dbc_tty_driver = NULL;
621+
goto fail_put;
624622
}
625623

624+
return ret;
625+
626+
fail_put:
627+
tty_driver_kref_put(dbc_tty_driver);
628+
fail:
629+
idr_destroy(&dbc_tty_minors);
630+
dbc_tty_driver = NULL;
631+
626632
return ret;
627633
}
628634

0 commit comments

Comments
 (0)