From: Ingo Molnar Date: Fri, 7 Mar 2008 09:47:43 +0000 (+0100) Subject: drivers/char/esp.c: fix bootup lockup X-Git-Tag: v2.6.25-rc5~15 X-Git-Url: http://git.samba.org/samba.git/?p=sfrench%2Fcifs-2.6.git;a=commitdiff_plain;h=80d38f9a7871d9bafc3f244dabe48b41a58de705;hp=ce4796d1e16cf3761dc2a02b8d588667d05b3078 drivers/char/esp.c: fix bootup lockup randconfig testing found a bootup lockup in drivers/char/esp.c because of a spinlock that wasn't correctly initialized. I'm not sure why it became more prominent in 2.6.25-rc4, the bug seems rather old and i've been doing allyesconfig bootups for ages with CONFIG_ESP enabled. This fixes this bootup lockup: PM: Adding info for No Bus:ttyP63 ttyP32 at 0x0240 (irq = 0) is an ESP primary port BUG: spinlock lockup on CPU#0, swapper/1, f56dd004 Pid: 1, comm: swapper Not tainted 2.6.25-rc4-sched-devel.git-x86-latest.git #402 [] _raw_spin_lock+0x134/0x140 [] _spin_lock_irqsave+0x5e/0x80 [] ? espserial_init+0x2be/0x6e0 [] espserial_init+0x2be/0x6e0 [] kernel_init+0x83/0x260 [] ? espserial_init+0x0/0x6e0 [] ? restore_nocheck_notrace+0x0/0xe [] ? kernel_init+0x0/0x260 [] ? kernel_init+0x0/0x260 [] kernel_thread_helper+0x7/0x10 ======================= kzalloc() is not the way to initialize spinlocks anymore. Signed-off-by: Ingo Molnar Signed-off-by: Linus Torvalds --- diff --git a/drivers/char/esp.c b/drivers/char/esp.c index c01e26d9ee5e..f3fe62067344 100644 --- a/drivers/char/esp.c +++ b/drivers/char/esp.c @@ -2484,6 +2484,7 @@ static int __init espserial_init(void) return 0; } + spin_lock_init(&info->lock); /* rx_trigger, tx_trigger are needed by autoconfig */ info->config.rx_trigger = rx_trigger; info->config.tx_trigger = tx_trigger;