[SERIAL] initialize spinlock for port failed to setup console
It seems serial_core intend to initialize port->lock just once for each ports. This is done in uart_set_options() for console, and in uart_add_one_port() for other ports. But there is a case the port->lock is not initialized by serial_core. If the setup function for the console was failed, it will not call uart_set_options() but the port is marked as console (uart_console(port) returns 1). It can happen if console was PCI port which can not detected at the time of register_console. This patch is to initialize port->lock for such console port. With this change, most of spin_lock_init() (some of them are labeled "Temporary fix.") in low-level serial drivers can be omitted. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
3ec9c59449
commit
9c0f4755bd
1 changed files with 1 additions and 1 deletions
|
@ -2237,7 +2237,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port)
|
||||||
* If this port is a console, then the spinlock is already
|
* If this port is a console, then the spinlock is already
|
||||||
* initialised.
|
* initialised.
|
||||||
*/
|
*/
|
||||||
if (!uart_console(port))
|
if (!(uart_console(port) && (port->cons->flags & CON_ENABLED)))
|
||||||
spin_lock_init(&port->lock);
|
spin_lock_init(&port->lock);
|
||||||
|
|
||||||
uart_configure_port(drv, state, port);
|
uart_configure_port(drv, state, port);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue