selftests/futex: Dynamically skip unsupported tests

Some new futex tests rely on kernel features that may not be supported
on all configurations (e.g., FUTEX2_NUMA or PR_FUTEX_HASH).
Currently, these tests fail with EINVAL when the features are missing.

Add dynamic skip logic to:

 - futex_priv_hash: Skip if PR_FUTEX_HASH returns ENOSYS or EINVAL.

 - futex_numa_mpol: Skip if futex2 or FUTEX2_NUMA returns ENOSYS or EINVAL.

This allows the tests to pass (as SKIPPED) on kernels without support,
while preserving coverage on configurations that do support them.

[ tglx: Adapt to harness changes, massage change log ]

Signed-off-by: Wake Liu <wakel@google.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260624070223.1533167-1-wakel@google.com
This commit is contained in:
Wake Liu
2026-07-05 21:49:18 +02:00
committed by Thomas Gleixner
parent 90a0286c7d
commit 50c121e5a5
2 changed files with 6 additions and 0 deletions
@@ -107,6 +107,9 @@ static void __test_futex(struct __test_metadata *_metadata, void *futex_ptr, int
break;
}
if (ret < 0) {
if (errno == ENOSYS || (errno == EINVAL && (futex_flags & FUTEX2_NUMA)))
SKIP(return, "futex2 or FUTEX2_NUMA not supported by kernel");
ASSERT_GE(ret, 0) {
TH_LOG("Failed futex2_wake(%d, 0x%x): %s",
to_wake, futex_flags, strerror(errno));
@@ -143,6 +143,9 @@ TEST(priv_hash)
/* First thread, expect to be 0, not yet initialized */
ret = futex_hash_slots_get();
if (ret < 0 && errno == EINVAL)
SKIP(return, "PR_FUTEX_HASH not supported by kernel");
ASSERT_EQ(ret, 0)
TH_LOG("futex_hash_slots_get() failed: %d, %s", ret, strerror(errno));