[PATCH 0/2] x86: Fix ARCH_REQ_XCOMP_PERM and update the test
From: Chang S. Bae
Date: Mon Nov 08 2021 - 18:42:23 EST
The recent x86 dynamic state support incorporates the arch_prctl option to
request permission before using a dynamic state.
It was designed to add the requested feature in the group leader's
permission bitmask so that every thread can reference this master bitmask.
The group leader is assumed to be unchanged here. The mainline is the case
as a group leader is identified at fork() or exec() time only.
This master bitmask should include non-dynamic features always, as they
are permitted by default. Users may check them via ARCH_GET_XCOMP_PERM.
But, in hindsight, the implementation does:
(1) update each task's permission bitmask, instead of the group leader's.
(2) overwrite the bitmask with the requested bit only, instead of adding
the bit to the existing one. This overwrite effectively revokes the
permission that is granted already.
Fix the code and also update the selftest to disclose the issue if there
is.
Reported-by: Yang Zhong <yang.zhong@xxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
Chang S. Bae (2):
x86/arch_prctl: Fix ARCH_REQ_XCOMP_PERM
selftests/x86/amx: Update the ARCH_REQ_XCOMP_PERM test
arch/x86/kernel/fpu/xstate.c | 2 +-
tools/testing/selftests/x86/amx.c | 16 ++++++++++++++--
2 files changed, 15 insertions(+), 3 deletions(-)
base-commit: 9a6cf455a952725422f4fb10848839989f833579
--
2.17.1