summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2005-07-03 23:37:09 +0200
committerLinus Torvalds <torvalds@g5.osdl.org>2005-07-03 23:37:09 +0200
commit08ab8c20316d6189a16b8101544a3e32b4c75e49 (patch)
tree3415b4af13e5e1011b2ea3e6dee1b8d84da2d344
parent[PATCH] drivers/ide/Makefile: kill dead CONFIG_BLK_DEV_IDE_TCQ entry (diff)
parent[PATCH] Serial: Fix console port spinlock initialisation (diff)
downloadlinux-08ab8c20316d6189a16b8101544a3e32b4c75e49.tar.xz
linux-08ab8c20316d6189a16b8101544a3e32b4c75e49.zip
Merge master.kernel.org:/home/rmk/linux-2.6-serial
-rw-r--r--drivers/serial/serial_core.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 139863a787f3..54699c3a00ab 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -1808,6 +1808,12 @@ uart_set_options(struct uart_port *port, struct console *co,
struct termios termios;
int i;
+ /*
+ * Ensure that the serial console lock is initialised
+ * early.
+ */
+ spin_lock_init(&port->lock);
+
memset(&termios, 0, sizeof(struct termios));
termios.c_cflag = CREAD | HUPCL | CLOCAL;
@@ -2196,10 +2202,16 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port)
state->port = port;
- spin_lock_init(&port->lock);
port->cons = drv->cons;
port->info = state->info;
+ /*
+ * If this port is a console, then the spinlock is already
+ * initialised.
+ */
+ if (!uart_console(port))
+ spin_lock_init(&port->lock);
+
uart_configure_port(drv, state, port);
/*