1
linux/drivers/tty
Mika Westerberg 33b1e6939f serial: mrst_max3110: initialize waitqueue earlier
The driver went to initialize its waitqueue at the start of the main
processing thread.  However, it is possible that this thread is not
scheduled on a CPU before the write function is called which leads to a
following error:

  BUG: spinlock bad magic on CPU#1, swapper/1
   lock: f5f3ebdc, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
  Pid: 1, comm: swapper Not tainted 3.0.0-rc2+ #67
  Call Trace:
   [<c1289663>] spin_bug+0xa3/0xf0
   [<c12897ad>] do_raw_spin_lock+0x7d/0x150
   [<c14963de>] _raw_spin_lock_irqsave+0x4e/0x60
   [<c102f2bb>] __wake_up+0x1b/0x50
   [<c12d3715>] serial_m3110_con_write+0x55/0x60
   [<c1041575>] __call_console_drivers+0x75/0x90
   [<c10415d9>] _call_console_drivers+0x49/0x80
   [<c1041baa>] console_unlock+0xca/0x1f0
   [<c10420ef>] vprintk+0x18f/0x4f0
   [<c14928a3>] printk+0x18/0x1a
   [<c1042730>] register_console+0x2e0/0x350
   [<c12d098e>] uart_add_one_port+0x33e/0x3d0
   [<c1485ba6>] serial_m3110_probe+0x1c2/0x1df
   [<c1303db7>] spi_drv_probe+0x17/0x20
   ...

Fix this by initializing the waitqueue before the main thread is
created.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-06-23 08:54:10 -07:00
..
hvc Fix common misspellings 2011-03-31 11:26:23 -03:00
ipwireless Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2011-05-24 13:28:35 -07:00
serial serial: mrst_max3110: initialize waitqueue earlier 2011-06-23 08:54:10 -07:00
vt Revert "tty: make receive_buf() return the amout of bytes received" 2011-06-04 06:33:24 +09:00
amiserial.c tty: remove invalid location line in file header 2011-04-19 16:33:36 -07:00
bfin_jtag_comm.c drivers/tty/bfin_jtag_comm.c: avoid calling put_tty_driver on NULL 2011-03-23 19:46:39 -07:00
cyclades.c Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-26 13:19:00 -07:00
isicom.c
Kconfig n_tracerouter and n_tracesink ldisc additions. 2011-05-13 16:31:00 -07:00
Makefile n_tracerouter and n_tracesink ldisc additions. 2011-05-13 16:31:00 -07:00
moxa.c drivers/tty/moxa.c: Put correct tty value 2011-04-29 14:17:45 -07:00
moxa.h
mxser.c
mxser.h Fix common misspellings 2011-03-31 11:26:23 -03:00
n_gsm.c Revert "tty: make receive_buf() return the amout of bytes received" 2011-06-04 06:33:24 +09:00
n_hdlc.c Revert "tty: make receive_buf() return the amout of bytes received" 2011-06-04 06:33:24 +09:00
n_r3964.c Revert "tty: make receive_buf() return the amout of bytes received" 2011-06-04 06:33:24 +09:00
n_tracerouter.c n_tracerouter and n_tracesink ldisc additions. 2011-05-13 16:31:00 -07:00
n_tracesink.c n_tracerouter and n_tracesink ldisc additions. 2011-05-13 16:31:00 -07:00
n_tracesink.h n_tracerouter and n_tracesink ldisc additions. 2011-05-13 16:31:00 -07:00
n_tty.c Revert "tty: make receive_buf() return the amout of bytes received" 2011-06-04 06:33:24 +09:00
nozomi.c Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-26 13:19:00 -07:00
pty.c tty: remove invalid location line in file header 2011-04-19 16:33:36 -07:00
rocket_int.h
rocket.c TTY: rocket, remove unused variables 2011-04-19 14:41:48 -07:00
rocket.h
synclink_gt.c Fix common misspellings 2011-03-31 11:26:23 -03:00
synclink.c tty: remove invalid location line in file header 2011-04-19 16:33:36 -07:00
synclinkmp.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sysrq.c lib, arch: add filter argument to show_mem and fix private implementations 2011-03-24 17:49:37 -07:00
tty_audit.c
tty_buffer.c tty_buffer: get rid of 'seen_tail' logic in flush_to_ldisc 2011-06-08 07:46:30 -07:00
tty_io.c TTY: tty_io, annotate locking functions 2011-04-25 14:19:12 -07:00
tty_ioctl.c Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 2011-05-23 12:23:20 -07:00
tty_ldisc.c TTY: introduce deinit helpers for proper ldisc shutdown 2011-04-19 14:43:01 -07:00
tty_mutex.c tty: remove invalid location line in file header 2011-04-19 16:33:36 -07:00
tty_port.c