On Mon, May 05, 2008 at 12:00:08PM +0200, Eric Sesterhenn wrote:[...] Hi Eric, This appears to be caused by init_fpu() missing from the restore_sigcontext->restore_i387->restore_fpu_checking code path. I believe that moving the init_fpu() call from math_state_restore to restore_fpu_checking should fix the problem? Regards, Frederik Signed-off-by: Frederik Deweerdt <frederik.deweerdt@gmail.com> diff --git a/arch/x86/kernel/traps_64.c b/arch/x86/kernel/traps_64.c index 8069073..5b1af48 100644 --- a/arch/x86/kernel/traps_64.c +++ b/arch/x86/kernel/traps_64.c @@ -1142,22 +1142,6 @@ asmlinkage void math_state_restore(void) { struct task_struct *me = current; - if (!used_math()) { - local_irq_enable(); - /* - * does a slab alloc which can sleep - */ - if (init_fpu(me)) { - /* - * ran out of memory! - */ - do_group_exit(SIGKILL); - return; - } - local_irq_disable(); - } - - clts(); /* Allow maths ops (or we recurse) */ restore_fpu_checking(&me->thread.xstate->fxsave); task_thread_info(me)->status |= TS_USEDFPU; me->fpu_counter++; diff --git a/include/asm-x86/i387.h b/include/asm-x86/i387.h index da2adb4..bf1cabe 100644 --- a/include/asm-x86/i387.h +++ b/include/asm-x86/i387.h @@ -47,7 +47,20 @@ static inline void tolerant_fwait(void) static inline int restore_fpu_checking(struct i387_fxsave_struct *fx) { - int err; + int err = -1; + + if (!used_math()) { + local_irq_enable(); + /* + * does a slab alloc which can sleep + */ + if (init_fpu(current)) + return err; + local_irq_disable(); + } + + clts(); /* Allow maths ops (or we recurse) */ asm volatile("1: rex64/fxrstor (%[fx])\n\t" "2:\n" --
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Benjamin Herrenschmidt | Re: [PATCH] Remove process freezer from suspend to RAM pathway |
| Bart Van Assche | Re: Integration of SCST in the mainstream Linux kernel |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Arjan van de Ven | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Natalie Protasevich | [BUG] New Kernel Bugs |
