Skip to content

Commit fe88c64

Browse files
jhovoldgregkh
authored andcommitted
serial: core: fix port-lock initialisation
Commit f743061 ("serial: core: Initialise spin lock before use in uart_configure_port()") tried to work around a breakage introduced by commit a3cb39d ("serial: core: Allow detach and attach serial device for console") by adding a second initialisation of the port lock when registering the port. As reported by the build robots [1], this doesn't really solve the regression introduced by the console-detach changes and also adds a second redundant initialisation of the lock for normal ports. Start cleaning up this mess by removing the redundant initialisation and making sure that the port lock is again initialised once-only for ports that aren't already in use as a console. [1] https://lore.kernel.org/r/20200802054852.GR23458@shao2-debian Fixes: f743061 ("serial: core: Initialise spin lock before use in uart_configure_port()") Fixes: a3cb39d ("serial: core: Allow detach and attach serial device for console") Cc: stable <stable@vger.kernel.org> # 5.7 Signed-off-by: Johan Hovold <johan@kernel.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20200909143101.15389-2-johan@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent f75aef3 commit fe88c64

1 file changed

Lines changed: 6 additions & 8 deletions

File tree

drivers/tty/serial/serial_core.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2378,13 +2378,6 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,
23782378
/* Power up port for set_mctrl() */
23792379
uart_change_pm(state, UART_PM_STATE_ON);
23802380

2381-
/*
2382-
* If this driver supports console, and it hasn't been
2383-
* successfully registered yet, initialise spin lock for it.
2384-
*/
2385-
if (port->cons && !(port->cons->flags & CON_ENABLED))
2386-
__uart_port_spin_lock_init(port);
2387-
23882381
/*
23892382
* Ensure that the modem control lines are de-activated.
23902383
* keep the DTR setting that is set in uart_set_options()
@@ -2900,7 +2893,12 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport)
29002893
goto out;
29012894
}
29022895

2903-
uart_port_spin_lock_init(uport);
2896+
/*
2897+
* If this port is in use as a console then the spinlock is already
2898+
* initialised.
2899+
*/
2900+
if (!uart_console_enabled(uport))
2901+
__uart_port_spin_lock_init(uport);
29042902

29052903
if (uport->cons && uport->dev)
29062904
of_console_check(uport->dev->of_node, uport->cons->name, uport->line);

0 commit comments

Comments
 (0)