• Quentin Casasnovas's avatar
    x86/fpu/xsaves: Fix improper uses of __ex_table · 06c8173e
    Quentin Casasnovas authored
    Commit:
    
      f31a9f7c ("x86/xsaves: Use xsaves/xrstors to save and restore xsave area")
    
    introduced alternative instructions for XSAVES/XRSTORS and commit:
    
      adb9d526 ("x86/xsaves: Add xsaves and xrstors support for booting time")
    
    added support for the XSAVES/XRSTORS instructions at boot time.
    
    Unfortunately both failed to properly protect them against faulting:
    
    The 'xstate_fault' macro will use the closest label named '1'
    backward and that ends up in the .altinstr_replacement section
    rather than in .text. This means that the kernel will never find
    in the __ex_table the .text address where this instruction might
    fault, leading to serious problems if userspace manages to
    trigger the fault.
    Signed-off-by: default avatarQuentin Casasnovas <quentin.casasnovas@oracle.com>
    Signed-off-by: default avatarJamie Iles <jamie.iles@oracle.com>
    [ Improved the changelog, fixed some whitespace noise. ]
    Acked-by: default avatarBorislav Petkov <bp@alien8.de>
    Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Cc: <stable@vger.kernel.org>
    Cc: Allan Xavier <mr.a.xavier@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: adb9d526 ("x86/xsaves: Add xsaves and xrstors support for booting time")
    Fixes: f31a9f7c ("x86/xsaves: Use xsaves/xrstors to save and restore xsave area")
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    06c8173e
xsave.h 6.25 KB