[PATCH 5/8] perf bench futex: Stop when futex_wake() fails in futex wake
From: Michal Pluta
Date: Sat Sep 26 2026 - 15:07:01 EST
If futex_wake() fails, 'futex wake' adds -1 to its unsigned counter of
woken threads and retries forever. Exit with an error instead, as
'futex requeue' already does.
Fixes: 27db78307481 ("perf bench: Add futex-wake microbenchmark")
Assisted-by: LLM
Signed-off-by: Michal Pluta <michalpl2003@xxxxxxxxx>
---
tools/perf/bench/futex-wake.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/tools/perf/bench/futex-wake.c b/tools/perf/bench/futex-wake.c
index 12a75be077a0..7674622639ca 100644
--- a/tools/perf/bench/futex-wake.c
+++ b/tools/perf/bench/futex-wake.c
@@ -207,9 +207,14 @@ int bench_futex_wake(int argc, const char **argv)
/* Ok, all threads are patiently blocked, start waking folks up */
gettimeofday(&start, NULL);
- while (nwoken != params.nthreads)
- nwoken += futex_wake(&futex1,
- params.nwakes, futex_flag);
+ while (nwoken != params.nthreads) {
+ int r = futex_wake(&futex1, params.nwakes, futex_flag);
+
+ if (r < 0)
+ err(EXIT_FAILURE, "couldn't wakeup from %p", &futex1);
+
+ nwoken += r;
+ }
gettimeofday(&end, NULL);
timersub(&end, &start, &runtime);
runtime_us = (u64)runtime.tv_sec * USEC_PER_SEC + runtime.tv_usec;
--
2.43.0