diff options
author | Paul Mundt <lethal@linux-sh.org> | 2012-01-10 02:30:37 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2012-01-10 02:30:37 -0500 |
commit | 6330c04bb455e10eb6cc6d2552a593af54c6dd96 (patch) | |
tree | ea149be3727f6b11e2102c9b30d756d25837dbdb /arch/sh | |
parent | 33dc5c1000c193084a70ffd8f3bd9c67d19f9159 (diff) |
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.S | 1 |
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: | |||
145 | mov r15, r4 | 145 | mov r15, r4 |
146 | mov r12, r5 ! set arg1(save_r0) | 146 | mov r12, r5 ! set arg1(save_r0) |
147 | mov r0, r6 | 147 | mov r0, r6 |
148 | sti | ||
148 | mov.l 2f, r1 | 149 | mov.l 2f, r1 |
149 | mov.l 3f, r0 | 150 | mov.l 3f, r0 |
150 | jmp @r1 | 151 | jmp @r1 |