[tip: locking/futex] selftests/futex: Correct validation logic in waitv
From: tip-bot2 for Wake Liu
Date: Sun Jul 05 2026 - 16:00:25 EST
The following commit has been merged into the locking/futex branch of tip:
Commit-ID: a894f6f403320c65b26816be00d9b694e606cae1
Gitweb: https://git.kernel.org/tip/a894f6f403320c65b26816be00d9b694e606cae1
Author: Wake Liu <wakel@xxxxxxxxxx>
AuthorDate: Tue, 26 May 2026 01:06:35
Committer: Thomas Gleixner <tglx@xxxxxxxxxx>
CommitterDate: Sun, 05 Jul 2026 21:49:17 +02:00
selftests/futex: Correct validation logic in waitv
In futex_waitv negative tests (invalid_flag, unaligned_address, etc.), test
results are evaluated as:
if (res == EINVAL)
Since sys_futex_waitv returns -1 on error and sets errno, direct positive
comparisons against res are always false, causing tests to silently pass
regardless of real errors.
Correct these validations to assert EXPECT_EQ(res, -1) and compare errno
directly against expected constants.
[ tglx: Fixup coding style ]
Signed-off-by: Wake Liu <wakel@xxxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxx>
Link: https://patch.msgid.link/20260526010635.23980-3-wakel@xxxxxxxxxx
---
tools/testing/selftests/futex/functional/futex_waitv.c | 55 ++++-----
1 file changed, 30 insertions(+), 25 deletions(-)
diff --git a/tools/testing/selftests/futex/functional/futex_waitv.c b/tools/testing/selftests/futex/functional/futex_waitv.c
index 87645b6..4858d5f 100644
--- a/tools/testing/selftests/futex/functional/futex_waitv.c
+++ b/tools/testing/selftests/futex/functional/futex_waitv.c
@@ -134,11 +134,12 @@ TEST(invalid_flag)
to.tv_sec++;
res = futex_waitv(waitv, NR_FUTEXES, 0, &to, CLOCK_MONOTONIC);
- if (res == EINVAL) {
- EXPECT_TRUE(0) {
- TH_LOG("futex_waitv private returned: %d %s",
- res ? errno : res, res ? strerror(errno) : "");
- }
+
+ EXPECT_EQ(res, -1)
+ TH_LOG("futex_waitv returned unexpected result: %d", res);
+ if (res == -1) {
+ EXPECT_EQ(errno, EINVAL)
+ TH_LOG("futex_waitv returned unexpected errno: %d", errno);
}
}
@@ -160,11 +161,12 @@ TEST(unaligned_address)
to.tv_sec++;
res = futex_waitv(waitv, NR_FUTEXES, 0, &to, CLOCK_MONOTONIC);
- if (res == EINVAL) {
- EXPECT_TRUE(0) {
- TH_LOG("futex_wake private returned: %d %s",
- res ? errno : res, res ? strerror(errno) : "");
- }
+
+ EXPECT_EQ(res, -1)
+ TH_LOG("futex_waitv returned unexpected result: %d", res);
+ if (res == -1) {
+ EXPECT_EQ(errno, EINVAL)
+ TH_LOG("futex_waitv returned unexpected errno: %d", errno);
}
}
@@ -185,11 +187,12 @@ TEST(null_address)
to.tv_sec++;
res = futex_waitv(waitv, NR_FUTEXES, 0, &to, CLOCK_MONOTONIC);
- if (res == EINVAL) {
- EXPECT_TRUE(0) {
- TH_LOG("futex_waitv private returned: %d %s",
- res ? errno : res, res ? strerror(errno) : "");
- }
+
+ EXPECT_EQ(res, -1)
+ TH_LOG("futex_waitv returned unexpected result: %d", res);
+ if (res == -1) {
+ EXPECT_EQ(errno, EINVAL)
+ TH_LOG("futex_waitv returned unexpected errno: %d", errno);
}
/* Testing a NULL address for *waiters */
@@ -199,11 +202,12 @@ TEST(null_address)
to.tv_sec++;
res = futex_waitv(NULL, NR_FUTEXES, 0, &to, CLOCK_MONOTONIC);
- if (res == EINVAL) {
- EXPECT_TRUE(0) {
- TH_LOG("futex_waitv private returned: %d %s",
- res ? errno : res, res ? strerror(errno) : "");
- }
+
+ EXPECT_EQ(res, -1)
+ TH_LOG("futex_waitv returned unexpected result: %d", res);
+ if (res == -1) {
+ EXPECT_EQ(errno, EINVAL)
+ TH_LOG("futex_waitv returned unexpected errno: %d", errno);
}
}
@@ -222,11 +226,12 @@ TEST(invalid_clockid)
to.tv_sec++;
res = futex_waitv(NULL, NR_FUTEXES, 0, &to, CLOCK_TAI);
- if (res == EINVAL) {
- EXPECT_TRUE(0) {
- TH_LOG("futex_waitv private returned: %d %s",
- res ? errno : res, res ? strerror(errno) : "");
- }
+
+ EXPECT_EQ(res, -1)
+ TH_LOG("futex_waitv returned unexpected result: %d", res);
+ if (res == -1) {
+ EXPECT_EQ(errno, EINVAL)
+ TH_LOG("futex_waitv returned unexpected errno: %d", errno);
}
}