x86/fpu/xsaves: Fix improper uses of __ex_table
f31a9f7c7169 ("x86/xsaves: Use xsaves/xrstors to save and restore xsave area")
introduced alternative instructions for XSAVES/XRSTORS and commit:
adb9d526e982 ("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: Quentin Casasnovas <email@example.com>
Signed-off-by: Jamie Iles <firstname.lastname@example.org>
[ Improved the changelog, fixed some whitespace noise. ]
Acked-by: Borislav Petkov <email@example.com>
Acked-by: Linus Torvalds <firstname.lastname@example.org>
Cc: Allan Xavier <email@example.com>
Cc: H. Peter Anvin <firstname.lastname@example.org>
Cc: Thomas Gleixner <email@example.com>
Fixes: adb9d526e982 ("x86/xsaves: Add xsaves and xrstors support for booting time")
Fixes: f31a9f7c7169 ("x86/xsaves: Use xsaves/xrstors to save and restore xsave area")
Signed-off-by: Ingo Molnar <firstname.lastname@example.org>
1 file changed