On Feb 15, 2016 12:14 PM, "Borislav Petkov" <b...@alien8.de> wrote: > > --- > From: Borislav Petkov <b...@suse.de> > Date: Mon, 15 Feb 2016 19:50:33 +0100 > Subject: [RFC PATCH] x86/FPU: Fix double FPU regs activation > > On the entry_INT80_32->do_syscall_32_irqs_on path on 32-bit we run with > interrupts enabled.
I would change this a little bit. sys_sigreturn calls fpu__restore_sig with interrupts enabled. When restoring a 32-bit signal frame, it can happen that... > And it can happen that we get preempted right after > setting ->fpstate_active in a task's FPU. > > After we get preempted, we switch between tasks merrily and eventually > are about to switch to that task above whose ->fpstate_active we > set. We enter __switch_to() and do switch_fpu_prepare(). Our task gets > ->fpregs_active set, we find ourselves back on the call stack below and > especially in __fpu__restore_sig() which sets ->fpregs_active again. > > Leading to that whoops below. --Andy