From: Ingo Molnar Date: Tue, 17 Jan 2006 06:14:00 +0000 (-0800) Subject: [PATCH] drivers/char/esp.c spinlock fix X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=8f56a31ad616b13414cf764f620f75f45dac26e6;p=openwrt%2Fstaging%2Fblogic.git [PATCH] drivers/char/esp.c spinlock fix There's incorrect spinlock usage in espserial_init(): autoconfig() uses info->lock before it's initialized. The fix is to initialize the spinlock earlier. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/char/esp.c b/drivers/char/esp.c index dd5dc8fa490d..3f3ac039f4d9 100644 --- a/drivers/char/esp.c +++ b/drivers/char/esp.c @@ -2492,6 +2492,7 @@ static int __init espserial_init(void) } memset((void *)info, 0, sizeof(struct esp_struct)); + 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; @@ -2528,7 +2529,6 @@ static int __init espserial_init(void) init_waitqueue_head(&info->close_wait); init_waitqueue_head(&info->delta_msr_wait); init_waitqueue_head(&info->break_wait); - spin_lock_init(&info->lock); ports = info; printk(KERN_INFO "ttyP%d at 0x%04x (irq = %d) is an ESP ", info->line, info->port, info->irq);