49 lines
1.4 KiB
Diff
49 lines
1.4 KiB
Diff
|
From befc6dbd6469d428c9e0830dbe51bdf7ac39d9ae Mon Sep 17 00:00:00 2001
|
||
|
From: Seebs <seebs@seebs.net>
|
||
|
Date: Thu, 22 Sep 2016 14:35:04 -0500
|
||
|
Subject: [PATCH] Don't send SIGUSR1 to init.
|
||
|
|
||
|
If the parent exits due to child process being slow, getppid() will return
|
||
|
1, and we'll send SIGUSR1 to init, which can break things like dumbinit
|
||
|
which aren't adequately protected against non-root processes sending them
|
||
|
signals.
|
||
|
|
||
|
Signed-off-by: Seebs <seebs@seebs.net>
|
||
|
|
||
|
Upstream-Status: Backport (commit befc6dbd6469d428c9e0830dbe51bdf7ac39d9ae)
|
||
|
|
||
|
[YOCTO #10324]
|
||
|
|
||
|
This resolves an issue where a docker container running builds would die
|
||
|
due to it's 'mini init' being signaled by pseudo.
|
||
|
|
||
|
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||
|
---
|
||
|
pseudo_server.c | 11 ++++++++---
|
||
|
|
||
|
diff --git a/pseudo_server.c b/pseudo_server.c
|
||
|
index 65102dd..8731d20 100644
|
||
|
--- a/pseudo_server.c
|
||
|
+++ b/pseudo_server.c
|
||
|
@@ -358,9 +358,14 @@ pseudo_server_start(int daemonize) {
|
||
|
signal(SIGTERM, quit_now);
|
||
|
/* tell parent process to stop waiting */
|
||
|
if (daemonize) {
|
||
|
- pseudo_diag("Setup complete, sending SIGUSR1 to pid %d.\n",
|
||
|
- getppid());
|
||
|
- kill(getppid(), SIGUSR1);
|
||
|
+ pid_t ppid = getppid();
|
||
|
+ if (ppid == 1) {
|
||
|
+ pseudo_diag("Setup complete, but parent is init, not sending SIGUSR1.\n");
|
||
|
+ } else {
|
||
|
+ pseudo_diag("Setup complete, sending SIGUSR1 to pid %d.\n",
|
||
|
+ ppid);
|
||
|
+ kill(ppid, SIGUSR1);
|
||
|
+ }
|
||
|
}
|
||
|
pseudo_server_loop();
|
||
|
return 0;
|
||
|
--
|
||
|
2.5.5
|
||
|
|