[PATCH] selftests/mm: fix incorrect skip output in pkey_sighandler_tests

From: Zenghui Yu

Date: Tue Aug 25 2026 - 08:31:08 EST


From: "Zenghui Yu (Huawei)" <zenghui.yu@xxxxxxxxx>

When pkeys is not supported, ksft_exit_skip() runs with ksft_plan already
set, which takes the "ok N # SKIP" branch intended for skipping a single
test case. The result is a TAP plan of 5 but only one result line.

$ ./pkey_sighandler_tests
TAP version 13
1..5
ok 1 # SKIP pkeys not supported
# 1 skipped test(s) detected. Consider enabling relevant config options to improve coverage.
# Planned tests != run tests (5 != 1)
# Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0

Move ksft_set_plan() after the skip check so ksft_exit_skip() takes
the "1..0 # SKIP" branch, the correct TAP representation for
skipping an entire test file.

$ ./pkey_sighandler_tests
TAP version 13
1..0 # SKIP pkeys not supported

Signed-off-by: Zenghui Yu (Huawei) <zenghui.yu@xxxxxxxxx>
---
tools/testing/selftests/mm/pkey_sighandler_tests.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/mm/pkey_sighandler_tests.c b/tools/testing/selftests/mm/pkey_sighandler_tests.c
index c218d0510a2a..74bf79a5399d 100644
--- a/tools/testing/selftests/mm/pkey_sighandler_tests.c
+++ b/tools/testing/selftests/mm/pkey_sighandler_tests.c
@@ -543,11 +543,12 @@ static void (*pkey_tests[])(void) = {
int main(int argc, char *argv[])
{
ksft_print_header();
- ksft_set_plan(ARRAY_SIZE(pkey_tests));

if (!is_pkeys_supported())
ksft_exit_skip("pkeys not supported\n");

+ ksft_set_plan(ARRAY_SIZE(pkey_tests));
+
for (test_nr = 0; test_nr < ARRAY_SIZE(pkey_tests); test_nr++) {
tracing_on();
(*pkey_tests[test_nr])();
--
2.53.0