| From d9dddfa1c6504a6f5068af4a4a56b305e7aa1cb8 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| arch/powerpc/kernel/signal.c | 8 ++++++++ |
| 1 files changed, 8 insertions(+), 0 deletions(-) |
| |
| diff --git a/arch/powerpc/kernel/signal.c b/arch/powerpc/kernel/signal.c |
| index a0afb55..de4960c 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 = ¤t->saved_sigmask; |
| else if (!oldset) |
| -- |
| 1.7.0.4 |
| |