]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fix machinectl shell (in machined) (#7785)
authorShawn Landden <slandden@gmail.com>
Thu, 4 Jan 2018 11:37:15 +0000 (03:37 -0800)
committerLennart Poettering <lennart@poettering.net>
Thu, 4 Jan 2018 11:37:15 +0000 (12:37 +0100)
4c253ed broke machined
$machinectl shell arch
Failed to get shell PTY: Input/output error

Closes: #7779
v2: do not drop DEATHSIG flag

src/basic/process-util.c

index 05373689eaa5d474e55fb98a0bef4da94da1eec2..7da22f4a9dba021c2011b199ee4d94672ffd327f 100644 (file)
@@ -1237,10 +1237,14 @@ int safe_fork_full(
         }
 
         if (flags & FORK_DEATHSIG) {
+                pid_t ppid;
                 /* Let's see if the parent PID is still the one we started from? If not, then the parent
                  * already died by the time we set PR_SET_PDEATHSIG, hence let's emulate the effect */
 
-                if (getppid() != original_pid) {
+                ppid = getppid();
+                if (ppid == 0)
+                        /* Parent is in a differn't PID namespace. */;
+                else if (ppid != original_pid) {
                         log_debug("Parent died early, raising SIGTERM.");
                         (void) raise(SIGTERM);
                         _exit(EXIT_FAILURE);