lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 9 Feb 2022 13:37:28 -0500 From: Sasha Levin <sashal@...nel.org> To: linux-kernel@...r.kernel.org, stable@...r.kernel.org Cc: Li Zhijian <lizhijian@...fujitsu.com>, yang xu <xuyang2018.jy@...fujitsu.com>, Christian Brauner <christian.brauner@...ntu.com>, Shuah Khan <skhan@...uxfoundation.org>, Sasha Levin <sashal@...nel.org>, keescook@...omium.org, shuah@...nel.org, linux-kselftest@...r.kernel.org Subject: [PATCH AUTOSEL 5.15 05/36] kselftest: signal all child processes From: Li Zhijian <lizhijian@...fujitsu.com> [ Upstream commit 92d25637a3a45904292c93f1863c6bbda4e3e38f ] We have some many cases that will create child process as well, such as pidfd_wait. Previously, we will signal/kill the parent process when it is time out, but this signal will not be sent to its child process. In such case, if child process doesn't terminate itself, ksefltest framework will hang forever. Here we group all its child processes so that kill() can signal all of them in timeout. Fixed change log: Shuah Khan <skhan@...uxfoundation.org> Suggested-by: yang xu <xuyang2018.jy@...fujitsu.com> Signed-off-by: Li Zhijian <lizhijian@...fujitsu.com> Acked-by: Christian Brauner <christian.brauner@...ntu.com> Signed-off-by: Shuah Khan <skhan@...uxfoundation.org> Signed-off-by: Sasha Levin <sashal@...nel.org> --- tools/testing/selftests/kselftest_harness.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h index 79a182cfa43ad..78e59620d28de 100644 --- a/tools/testing/selftests/kselftest_harness.h +++ b/tools/testing/selftests/kselftest_harness.h @@ -875,7 +875,8 @@ static void __timeout_handler(int sig, siginfo_t *info, void *ucontext) } t->timed_out = true; - kill(t->pid, SIGKILL); + // signal process group + kill(-(t->pid), SIGKILL); } void __wait_for_test(struct __test_metadata *t) @@ -985,6 +986,7 @@ void __run_test(struct __fixture_metadata *f, ksft_print_msg("ERROR SPAWNING TEST CHILD\n"); t->passed = 0; } else if (t->pid == 0) { + setpgrp(); t->fn(t, variant); if (t->skip) _exit(255); -- 2.34.1
Powered by blists - more mailing lists