]> git.baikalelectronics.ru Git - kernel.git/commit
x86/fpu: Emulate XRSTOR's behavior if the xfeatures PKRU bit is not set
authorKyle Huey <me@kylehuey.com>
Tue, 15 Nov 2022 23:09:31 +0000 (15:09 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 14 Jan 2023 09:33:42 +0000 (10:33 +0100)
commit2f7920fa7ca43adb5e732191eaf518b406b96eff
treef973e8b4649af45c28f88f9abf765ecd6e203641
parent12aeaad6c8760ca2e6955bc85a5e06abac32396d
x86/fpu: Emulate XRSTOR's behavior if the xfeatures PKRU bit is not set

commit d7e5aceace514a2b1b3ca3dc44f93f1704766ca7 upstream.

The hardware XRSTOR instruction resets the PKRU register to its hardware
init value (namely 0) if the PKRU bit is not set in the xfeatures mask.
Emulating that here restores the pre-5.14 behavior for PTRACE_SET_REGSET
with NT_X86_XSTATE, and makes sigreturn (which still uses XRSTOR) and
ptrace behave identically. KVM has never used XRSTOR and never had this
behavior, so KVM opts-out of this emulation by passing a NULL pkru pointer
to copy_uabi_to_xstate().

Fixes: 0050d658c3f7 ("x86/fpu: Hook up PKRU into ptrace()")
Signed-off-by: Kyle Huey <me@kylehuey.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://lore.kernel.org/all/20221115230932.7126-6-khuey%40kylehuey.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kernel/fpu/core.c
arch/x86/kernel/fpu/xstate.c