In order to keep tests from hanging forever, this adds an alarm signal
to each test run. This assumes an individual test doesn't take longer
than 30 seconds.

Signed-off-by: Kees Cook <keesc...@chromium.org>
---
 tools/testing/selftests/kselftest_harness.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/testing/selftests/kselftest_harness.h 
b/tools/testing/selftests/kselftest_harness.h
index 2d90c98eeb67..941d9391377f 100644
--- a/tools/testing/selftests/kselftest_harness.h
+++ b/tools/testing/selftests/kselftest_harness.h
@@ -696,6 +696,7 @@ void __run_test(struct __test_metadata *t)
        t->passed = 1;
        t->trigger = 0;
        printf("[ RUN      ] %s\n", t->name);
+       alarm(30);
        child_pid = fork();
        if (child_pid < 0) {
                printf("ERROR SPAWNING TEST CHILD\n");
@@ -744,6 +745,7 @@ void __run_test(struct __test_metadata *t)
                }
        }
        printf("[     %4s ] %s\n", (t->passed ? "OK" : "FAIL"), t->name);
+       alarm(0);
 }
 
 static int test_harness_run(int __attribute__((unused)) argc,
-- 
2.17.1


-- 
Kees Cook

Reply via email to