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: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
Paul Mundt 2010-01-18 20:39:49 +09:00
parent 3d467676ab
commit 4291b730cd
1 changed files with 2 additions and 0 deletions

View File

@ -56,6 +56,7 @@ void fpu_state_restore(struct pt_regs *regs)
}
if (!tsk_used_math(tsk)) {
local_irq_enable();
/*
* does a slab alloc which can sleep
*/
@ -66,6 +67,7 @@ void fpu_state_restore(struct pt_regs *regs)
do_group_exit(SIGKILL);
return;
}
local_irq_disable();
}
grab_fpu(regs);