On x86 CPUs without protection keys, pkey_alloc() fails with ENOSPC, as documented in pkey_alloc(2). protection_key_support() only expects ENOSYS or EINVAL, so the test fails on such machines, e.g. an Intel Core i5-7200U: protection_key_support: error: rv -1, errno 28 Before commit dee87e09b0dd ("x86/pkeys: Fix pkey_alloc() return value when pkeys are not supported"), the first pkey_alloc() call on such CPUs wrongly returned EINVAL, so the failure only shows up on kernels with that fix. Treat ENOSPC as "no protection key support" as well. Keep accepting EINVAL for kernels before v7.3. An AI coding assistant (Claude) was used to analyze the failure and to draft the fix and this changelog. Tested on v7.4-rc1 on the machine above; the test now passes. Fixes: bf5add391eeb ("proc: test ProtectionKey in proc-empty-vm test") Reviewed-by: Kevin Brodsky Signed-off-by: Kurt Lin --- v2: - Mention commit dee87e09b0dd, which made the failure visible (Kevin) - Add Reviewed-by from Kevin v1: https://lore.kernel.org/linux-kselftest/20261109151912.156518-1-lylin1023@gmail.com/ tools/testing/selftests/proc/proc-empty-vm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/testing/selftests/proc/proc-empty-vm.c b/tools/testing/selftests/proc/proc-empty-vm.c index b3f898aab4ab..a9d3c973a663 100644 --- a/tools/testing/selftests/proc/proc-empty-vm.c +++ b/tools/testing/selftests/proc/proc-empty-vm.c @@ -77,6 +77,9 @@ static int protection_key_support(void) } else if (rv == -1 && errno == EINVAL) { // ospke=n return 0; + } else if (rv == -1 && errno == ENOSPC) { + // CPU without protection keys + return 0; } else { fprintf(stderr, "%s: error: rv %ld, errno %d\n", __func__, rv, errno); exit(EXIT_FAILURE); -- 2.56.0