• Kevin Hao's avatar
    x86/fpu: Set the xcomp_bv when we fake up a XSAVES area · 4c833368
    Kevin Hao authored
    I got the following calltrace on a Apollo Lake SoC with 32-bit kernel:
    
      WARNING: CPU: 2 PID: 261 at arch/x86/include/asm/fpu/internal.h:363 fpu__restore+0x1f5/0x260
      [...]
      Hardware name: Intel Corp. Broxton P/NOTEBOOK, BIOS APLIRVPA.X64.0138.B35.1608091058 08/09/2016
      Call Trace:
       dump_stack()
       __warn()
       ? fpu__restore()
       warn_slowpath_null()
       fpu__restore()
       __fpu__restore_sig()
       fpu__restore_sig()
       restore_sigcontext.isra.9()
       sys_sigreturn()
       do_int80_syscall_32()
       entry_INT80_32()
    
    The reason is that a #GP occurs when executing XRSTORS. The root cause
    is that we forget to set the xcomp_bv when we fake up the XSAVES area
    in the copyin_to_xsaves() function.
    Signed-off-by: default avatarKevin Hao <haokexin@gmail.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yu-cheng Yu <yu-cheng.yu@intel.com>
    Link: http://lkml.kernel.org/r/1485075023-30161-1-git-send-email-haokexin@gmail.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    4c833368
xstate.c 28.4 KB