From 4be16e54c9f261283606da017428b9051e591d67 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Mon, 29 Dec 2003 23:48:35 -0800 Subject: [PATCH] [PATCH] log_buf_len_setup() irq fix log_buf_len_setup() is called on the start_kernel->parse_args() path. It must not enable interrupts. --- kernel/printk.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/printk.c b/kernel/printk.c index 1ad37691f56d2..10978fa9a476b 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -181,6 +181,7 @@ int __init add_preferred_console(char *name, int idx, char *options) static int __init log_buf_len_setup(char *str) { unsigned long size = memparse(str, &str); + unsigned long flags; if (size > log_buf_len) { unsigned long start, dest_idx, offset; @@ -192,7 +193,7 @@ static int __init log_buf_len_setup(char *str) goto out; } - spin_lock_irq(&logbuf_lock); + spin_lock_irqsave(&logbuf_lock, flags); log_buf_len = size; log_buf = new_log_buf; @@ -206,7 +207,7 @@ static int __init log_buf_len_setup(char *str) log_start -= offset; con_start -= offset; log_end -= offset; - spin_unlock_irq(&logbuf_lock); + spin_unlock_irqrestore(&logbuf_lock, flags); printk("log_buf_len: %d\n", log_buf_len); } -- 2.53.0