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


Reply via email to