summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorJohn Stultz <john.stultz@linaro.org>2014-06-05 01:11:39 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-05 01:54:17 +0200
commit81954606265ab8f04b41154bd00576013affcf5b (patch)
treef320a8b4fb80586184c9dcba1974275f7aeca56d /kernel
parentprintk: remove separate printk_sched buffers and use printk buf instead (diff)
downloadlinux-81954606265ab8f04b41154bd00576013affcf5b.tar.xz
linux-81954606265ab8f04b41154bd00576013affcf5b.zip
printk: disable preemption for printk_sched
An earlier change in -mm (printk: remove separate printk_sched buffers...), removed the printk_sched irqsave/restore lines since it was safe for current users. Since we may be expanding usage of printk_sched(), disable preepmtion for this function to make it more generally safe to call. Signed-off-by: John Stultz <john.stultz@linaro.org> Reviewed-by: Jan Kara <jack@suse.cz> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Jiri Bohac <jbohac@suse.cz> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/printk/printk.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 247b0c1fadfc..dc2b8bd9bc1e 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2590,12 +2590,14 @@ int printk_sched(const char *fmt, ...)
va_list args;
int r;
+ preempt_disable();
va_start(args, fmt);
r = vprintk_emit(0, SCHED_MESSAGE_LOGLEVEL, NULL, 0, fmt, args);
va_end(args);
__this_cpu_or(printk_pending, PRINTK_PENDING_OUTPUT);
irq_work_queue(&__get_cpu_var(wake_up_klogd_work));
+ preempt_enable();
return r;
}