Re: Oops with tip/x86/fpu

Oleg Nesterov
2015-03-27T19:08:38Z

On 03/26, Yu, Fenghua wrote:
>
> > On 03/05, Oleg Nesterov wrote:
> >
> > void sighup(int sig, siginfo_t *info, void *ctxt) {
> > struct ucontext *uctxt = ctxt;
> > struct sigcontext *sctxt = (void*)&uctxt->uc_mcontext;
> >
> > printf("SIGHUP! %p\n", sctxt->fpstate);
> > sctxt->fpstate = (void *)1;
>
> sctxt->fpstate=(void *)1 changes the fpstate pointer in the sigcontext.
> It will generate segfault and bad frame info in kernel.

Yes, but also it will trigger math_state_restore() without used_math().

This triggers 2 problems:

1. "BUG: sleeping function called from invalid context ...".

Fixed by a7c80ebcac3068b1c3cb27d538d29558c30010c8

2. On some machines this can lead to GPF. This is another FPU bug.
NOT FIXED yet. Because we all are busy with other problems ;)

And! this leads to kernel crash.

Fixed by 06c8173eb92bbfc03a0fe8bb64315857d0badd06

Oleg.