x86/fpu: Allow PKRU to be (once again) written by ptrace.
authorKyle Huey <me@kylehuey.com>
Tue, 15 Nov 2022 23:09:30 +0000 (15:09 -0800)
committerDave Hansen <dave.hansen@linux.intel.com>
Wed, 16 Nov 2022 23:03:53 +0000 (15:03 -0800)
commit4a804c4f8356393d6b5eff7600f07615d7869c13
tree879ef5b069e57b8d4388099b0060c6c9b4d5cb65
parent2c87767c35ee9744f666ccec869d5fe742c3de0a
x86/fpu: Allow PKRU to be (once again) written by ptrace.

Move KVM's PKRU handling code in fpu_copy_uabi_to_guest_fpstate() to
copy_uabi_to_xstate() so that it is shared with other APIs that write the
XSTATE such as PTRACE_SETREGSET with NT_X86_XSTATE.

This restores the pre-5.14 behavior of ptrace. The regression can be seen
by running gdb and executing `p $pkru`, `set $pkru = 42`, and `p $pkru`.
On affected kernels (5.14+) the write to the PKRU register (which gdb
performs through ptrace) is ignored.

[ dhansen: removed stable@ tag for now.  The ABI was broken for long
   enough that this is not urgent material.  Let's let it stew
   in tip for a few weeks before it's submitted to stable
   because there are so many ABIs potentially affected. ]

Fixes: e84ba47e313d ("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-5-khuey%40kylehuey.com
arch/x86/kernel/fpu/core.c
arch/x86/kernel/fpu/xstate.c