On Thu, Jun 30, 2022 at 10:09:19PM +0800, Yang Yingliang wrote: > Add missing uart_unregister_driver() in error case in sci_probe_single(). > > Fixes: 352b92664549 ("serial: sh-sci: Move uart_register_driver call to device probe") > Reported-by: Hulk Robot <hulkci@xxxxxxxxxx> > Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx> > --- > drivers/tty/serial/sh-sci.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > index ca5a58f01aff..08a249eaaa8c 100644 > --- a/drivers/tty/serial/sh-sci.c > +++ b/drivers/tty/serial/sh-sci.c > @@ -3280,7 +3280,7 @@ static int sci_probe_single(struct platform_device *dev, > > ret = sci_init_single(dev, sciport, index, p, false); > if (ret) > - return ret; > + goto err_unregister; > > sciport->gpios = mctrl_gpio_init(&sciport->port, 0); > if (IS_ERR(sciport->gpios)) { > @@ -3306,6 +3306,10 @@ static int sci_probe_single(struct platform_device *dev, > > err_cleanup_single: > sci_cleanup_single(sciport); > +err_unregister: > + mutex_lock(&sci_uart_registration_lock); > + uart_unregister_driver(&sci_uart_driver); > + mutex_unlock(&sci_uart_registration_lock); Did you test this? I think you just broke all other devices attached to this driver. Please always test your code before submitting it, especially for stuff like this. thanks, greg k-h