[PATCH v2 12/17] selftests: timers: nanosleep: Explicitly handle timer_delete() failure

Thomas Weißschuh (Schneider Electric) <[email protected]> Mon, 03 Aug 2026 12:04:43 +0200
Newsgroups org.kernel.vger.linux-kselftest,org.kernel.vger.linux-kernel
Message-ID <20260803-auxclock-nanosleep-prep-v2-12-910cbd485390@linutronix.de>
An upcoming patch will remove the early exit on failure of a single
testcase. If a test fails because a timeout timer could not be deleted,
then that timeout timer might interfere with the following tettcases.

Exit the whole test case with a clear error message in this case.

Other failures are not problematic:
* If timer_settime() fails, a harmless unarmed timer is left around.
* The SIGALRM handler reconfigured for each call to
  nanosleep_test_remaining() anyways.

Signed-off-by: Thomas Weißschuh (Schneider Electric) <[email protected]>
---
 tools/testing/selftests/timers/nanosleep.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/timers/nanosleep.c b/tools/testing/selftests/timers/nanosleep.c
index 5037481516df..dd899dcfb2cb 100644
--- a/tools/testing/selftests/timers/nanosleep.c
+++ b/tools/testing/selftests/timers/nanosleep.c
@@ -111,11 +111,14 @@ static int nanosleep_test_remaining(int clockid)
 
 	rqtp.tv_nsec = NSEC_PER_SEC / 2;
 	ret = clock_nanosleep(clockid, 0, &rqtp, &rmtp);
-	if (ret != EINTR)
-		return KSFT_FAIL;
 
-	ret = timer_delete(timer);
-	if (ret)
+	if (timer_delete(timer)) {
+		ksft_exit_fail_msg("Unable to delete the timeout timer for %s. "
+				   "This might interfere with following testcases.\n",
+				   clock_name(clockid));
+	}
+
+	if (ret != EINTR)
 		return KSFT_FAIL;
 
 	sa.sa_handler = SIG_DFL;

-- 
2.55.0