From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date: Tue, 16 Oct 2012 04:35:59 +0000 (-0700)
Subject: printk: Fix scheduling-while-atomic problem in console_cpu_notify()
X-Git-Tag: v3.7-rc2~37
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=85eae82a0855d49852b87deac8653e4ebc8b291f;p=users%2Fjedix%2Flinux-maple.git

printk: Fix scheduling-while-atomic problem in console_cpu_notify()

The console_cpu_notify() function runs with interrupts disabled in the
CPU_DYING case.  It therefore cannot block, for example, as will happen
when it calls console_lock().  Therefore, remove the CPU_DYING leg of
the switch statement to avoid this problem.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---

diff --git a/kernel/printk.c b/kernel/printk.c
index 66a2ea37b576..2d607f4d1797 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -1890,7 +1890,6 @@ static int __cpuinit console_cpu_notify(struct notifier_block *self,
 	switch (action) {
 	case CPU_ONLINE:
 	case CPU_DEAD:
-	case CPU_DYING:
 	case CPU_DOWN_FAILED:
 	case CPU_UP_CANCELED:
 		console_lock();