| 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 = ¤t->saved_sigmask; |
| else if (!oldset) |
| -- |
| 1.7.1.1 |
| |