aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2012-01-10 16:30:37 +0900
committerPaul Mundt <lethal@linux-sh.org>2012-01-10 16:30:37 +0900
commit6330c04bb455e10eb6cc6d2552a593af54c6dd96 (patch)
treeea149be3727f6b11e2102c9b30d756d25837dbdb /arch/sh
parentsh: Fix up store queue code for subsys_interface changes. (diff)
downloadlinux-dev-6330c04bb455e10eb6cc6d2552a593af54c6dd96.tar.xz
linux-dev-6330c04bb455e10eb6cc6d2552a593af54c6dd96.zip
sh: Ensure IRQs are enabled across do_notify_resume().
do_notify_resume() can trigger the freezer via the try_to_freeze() path (both explicitly through a redundant call in do_signal() or via get_signal_to_deliver()). That IRQs were disabled across this callsite became apparent with the might_sleep() introduction in try_to_freeze() by Tejun in a0acae0e886d44bd5ce6d2f173c1ace0fcf0d9f6, resulting in: BUG: sleeping function called from invalid context at include/linux/freezer.h:45 in_atomic(): 0, irqs_disabled(): 1, pid: 819, name: ntpd no locks held by ntpd/819. Stack: (0x9c81be80 to 0x9c81c000) ... Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r--arch/sh/kernel/entry-common.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S
index 2b15ae60c3a0..f67601cb3f1f 100644
--- a/arch/sh/kernel/entry-common.S
+++ b/arch/sh/kernel/entry-common.S
@@ -145,6 +145,7 @@ work_notifysig:
mov r15, r4
mov r12, r5 ! set arg1(save_r0)
mov r0, r6
+ sti
mov.l 2f, r1
mov.l 3f, r0
jmp @r1