[PATCH 3/3] selftests/x86: skip shstk tests where perf_event_open() fails
From: Richard Patel
Date: Thu Oct 08 2026 - 16:22:30 EST
perf_event_open() without caps fails with EACCES on some kernels.
With this fix, the shadow stack selftest passes without privileges
on a kernel with a RHEL-like config.
Signed-off-by: Richard Patel <ripatel@xxxxxxx>
---
tools/testing/selftests/x86/test_shadow_stack.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/x86/test_shadow_stack.c b/tools/testing/selftests/x86/test_shadow_stack.c
index 67baebbdbd87..e2340232a7b6 100644
--- a/tools/testing/selftests/x86/test_shadow_stack.c
+++ b/tools/testing/selftests/x86/test_shadow_stack.c
@@ -952,8 +952,11 @@ static int test_uretprobe(void)
fd = syscall(__NR_perf_event_open, &attr, 0 /* pid */, -1 /* cpu */,
-1 /* group_fd */, PERF_FLAG_FD_CLOEXEC);
- if (fd < 0)
+ if (fd < 0) {
+ printf("[SKIP]\tUretprobe test, perf_event_open() failed: %m\n");
+ err = 0;
goto out;
+ }
if (sigsetjmp(jmp_buffer, 1))
goto out;
@@ -1031,8 +1034,11 @@ static int test_uprobe_call(void)
fd = syscall(__NR_perf_event_open, &attr, 0 /* pid */, -1 /* cpu */,
-1 /* group_fd */, PERF_FLAG_FD_CLOEXEC);
- if (fd < 0)
+ if (fd < 0) {
+ printf("[SKIP]\tUprobe on CALL test, perf_event_open() failed: %m\n");
+ err = 0;
goto out;
+ }
if (sigsetjmp(jmp_buffer, 1))
goto out;
--
2.52.0