blob: 443b564e84d944a56cb301e51aeb1e5eed867623 [file] [log] [blame]
From c7dec167a21e00e5ebd1c5c525719814b95c7bf5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 14 Jun 2010 18:20:05 +0200
Subject: [PATCH] powerpc: Enable interrupts in do_signal()
commit c7dec167a21e00e5ebd1c5c525719814b95c7bf5 in tip.
do_signal() is missing an interrupt enabled which causes might_sleep
warning or scheduling while atomic bugs.
Reported-by: Will Schmidt <will_schmidt@vnet.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
diff --git a/arch/powerpc/kernel/signal.c b/arch/powerpc/kernel/signal.c
index 00b5078..fa580f9 100644
--- a/arch/powerpc/kernel/signal.c
+++ b/arch/powerpc/kernel/signal.c
@@ -120,6 +120,14 @@ static int do_signal_pending(sigset_t *oldset, struct pt_regs *regs)
int ret;
int is32 = is_32bit_task();
+#ifdef CONFIG_PREEMPT_RT
+ /*
+ * Fully-preemptible kernel does not need interrupts disabled:
+ */
+ local_irq_enable();
+ preempt_check_resched();
+#endif
+
if (current_thread_info()->local_flags & _TLF_RESTORE_SIGMASK)
oldset = &current->saved_sigmask;
else if (!oldset)
--
1.7.1.1