selftests/resctrl: Kill child process before parent process terminates if SIGTERM...
authorShaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Wed, 23 Mar 2022 08:12:22 +0000 (17:12 +0900)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 25 Apr 2022 23:06:41 +0000 (17:06 -0600)
In kselftest framework, a sub test is run using the timeout utility
and it will send SIGTERM to the test upon timeout.

In resctrl_tests, a child process is created by fork() to
run benchmark but SIGTERM is not set in sigaction().
If SIGTERM signal is received, the parent process will be killed,
but the child process still exists.

Kill child process before the parent process terminates
if SIGTERM signal is received.

Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/selftests/resctrl/resctrl_val.c

index 95224345c78e75c755f925314c03f4f19136df6d..b32b96356ec70a79136b44b9d3b045894ba9c0b1 100644 (file)
@@ -678,6 +678,7 @@ int resctrl_val(char **benchmark_cmd, struct resctrl_val_param *param)
        sigemptyset(&sigact.sa_mask);
        sigact.sa_flags = SA_SIGINFO;
        if (sigaction(SIGINT, &sigact, NULL) ||
+           sigaction(SIGTERM, &sigact, NULL) ||
            sigaction(SIGHUP, &sigact, NULL)) {
                perror("# sigaction");
                ret = errno;