提交 4291b730 编写于 作者: P Paul Mundt

sh: Need IRQs enabled for init_fpu().

This tosses in a local_irq_enable()/disable() pair around the init_fpu()
callsite in the FPU state restore exception handler. Fixes up a slab BUG
triggered by making a slab cache allocation that can sleep whilst
irqs_disabled(). This follows the behaviour undertaken by the x86
implementation.
Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
上级 3d467676
...@@ -56,6 +56,7 @@ void fpu_state_restore(struct pt_regs *regs) ...@@ -56,6 +56,7 @@ void fpu_state_restore(struct pt_regs *regs)
} }
if (!tsk_used_math(tsk)) { if (!tsk_used_math(tsk)) {
local_irq_enable();
/* /*
* does a slab alloc which can sleep * does a slab alloc which can sleep
*/ */
...@@ -66,6 +67,7 @@ void fpu_state_restore(struct pt_regs *regs) ...@@ -66,6 +67,7 @@ void fpu_state_restore(struct pt_regs *regs)
do_group_exit(SIGKILL); do_group_exit(SIGKILL);
return; return;
} }
local_irq_disable();
} }
grab_fpu(regs); grab_fpu(regs);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册