On Tue, Jul 7, 2020 at 12:49 AM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > The comment near to uart_port_spin_lock_init() says: > > Ensure that the serial console lock is initialised early. > If this port is a console, then the spinlock is already initialised. > > and there is nothing about enabled or disabled consoles. The commit > a3cb39d258ef ("serial: core: Allow detach and attach serial device > for console") made a change, which follows the comment, and also to > prevent reinitialisation of the lock in use, when user detaches and > attaches back the same console device. But this change discovers > another issue, that uart_add_one_port() tries to access a spin lock > that now may be uninitialised. This happens when a driver expects > the serial core to register a console on its behalf. In this case > we must initialise a spin lock before use. > > Fixes: a3cb39d258ef ("serial: core: Allow detach and attach serial device for console") > Reported-by: Marc Zyngier <maz@xxxxxxxxxx> > Reported-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx> > Reported-by: Guenter Roeck <linux@xxxxxxxxxxxx> > Reported-by: Anatoly Pugachev <matorola@xxxxxxxxx> > Acked-by: Marc Zyngier <maz@xxxxxxxxxx> > Tested-by: Tony Lindgren <tony@xxxxxxxxxxx> > Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > v3: renamed lock init primitive and dropped inline (Marc), added tags (Marc, Tony) > drivers/tty/serial/serial_core.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c Andy, probably late, but tested on my sparc64 ldom - works (boots). Thanks.