Patch "kselftest: signal all child processes" has been added to the 5.16-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    kselftest: signal all child processes

to the 5.16-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     kselftest-signal-all-child-processes.patch
and it can be found in the queue-5.16 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 8e7fc917cced744b99b1f3d317779bf20c4977c1
Author: Li Zhijian <lizhijian@xxxxxxxxxxxxxx>
Date:   Fri Dec 17 17:29:55 2021 +0800

    kselftest: signal all child processes
    
    [ 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@xxxxxxxxxxxxxxxxxxx>
    
    Suggested-by: yang xu <xuyang2018.jy@xxxxxxxxxxxxxx>
    Signed-off-by: Li Zhijian <lizhijian@xxxxxxxxxxxxxx>
    Acked-by: Christian Brauner <christian.brauner@xxxxxxxxxx>
    Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

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);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux