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.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to