X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshutdown.c;h=1c6dc6597b6598245e116926808ccae11a53d902;hb=d2d4b038999d65826a2048a1a7829f9d5e762978;hp=d6b47c5a7857fcab6d2e940f39e9b6145062d583;hpb=2006d9acb1248e4225d31c420520c043b1ae044d;p=elogind.git diff --git a/src/shutdown.c b/src/shutdown.c index d6b47c5a7..1c6dc6597 100644 --- a/src/shutdown.c +++ b/src/shutdown.c @@ -276,9 +276,10 @@ static int pivot_to_new_root(void) { log_error("Failed to open /dev/console: %m"); else { make_stdio(fd); - /* initialize the controlling terminal */ - setsid(); - ioctl(0, TIOCSCTTY, NULL); + + /* Initialize the controlling terminal */ + setsid(); + ioctl(STDIN_FILENO, TIOCSCTTY, NULL); } return 0; @@ -294,6 +295,8 @@ int main(int argc, char *argv[]) { log_set_target(LOG_TARGET_CONSOLE); /* syslog will die if not gone yet */ log_open(); + umask(0022); + if (getpid() != 1) { log_error("Not executed by init (pid 1)."); r = -EPERM; @@ -383,9 +386,12 @@ int main(int argc, char *argv[]) { log_error("Failed to detach DM devices: %s", strerror(-r)); } - if (!need_umount && !need_swapoff && !need_loop_detach && !need_dm_detach) + if (!need_umount && !need_swapoff && !need_loop_detach && !need_dm_detach) { + if (retries > 0) + log_info("All filesystems, swaps, loop devices, DM devices detached."); /* Yay, done */ break; + } /* If in this iteration we didn't manage to * unmount/deactivate anything, we either kill more