X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fshutdown.c;h=70a461e38c79bc08097dc79ad4882c4b714f3c0c;hb=340a1d2330ddc1dd18ad75bcdddf32f63c84b4a1;hp=10455fa309a1342ecdac02875cc1b3d9c83a083b;hpb=56f64d95763a799ba4475daf44d8e9f72a1bd474;p=elogind.git diff --git a/src/core/shutdown.c b/src/core/shutdown.c index 10455fa30..70a461e38 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -20,21 +20,15 @@ ***/ #include -#include #include #include -#include #include #include -#include -#include -#include #include #include #include #include #include -#include #include #include "missing.h" @@ -42,7 +36,6 @@ #include "fileio.h" #include "umount.h" #include "util.h" -#include "mkdir.h" #include "virt.h" #include "watchdog.h" #include "killall.h" @@ -138,17 +131,13 @@ static int parse_argv(int argc, char *argv[]) { } static int switch_root_initramfs(void) { - if (mount("/run/initramfs", "/run/initramfs", NULL, MS_BIND, NULL) < 0) { - log_error_errno(errno, "Failed to mount bind /run/initramfs on /run/initramfs: %m"); - return -errno; - } + if (mount("/run/initramfs", "/run/initramfs", NULL, MS_BIND, NULL) < 0) + return log_error_errno(errno, "Failed to mount bind /run/initramfs on /run/initramfs: %m"); - if (mount(NULL, "/run/initramfs", NULL, MS_PRIVATE, NULL) < 0) { - log_error_errno(errno, "Failed to make /run/initramfs private mount: %m"); - return -errno; - } + if (mount(NULL, "/run/initramfs", NULL, MS_PRIVATE, NULL) < 0) + return log_error_errno(errno, "Failed to make /run/initramfs private mount: %m"); - /* switch_root with MS_BIND, because there might still be processes lurking around, which have open file desriptors. + /* switch_root with MS_BIND, because there might still be processes lurking around, which have open file descriptors. * /run/initramfs/shutdown will take care of these. * Also do not detach the old root, because /run/initramfs/shutdown needs to access it. */ @@ -163,6 +152,7 @@ int main(int argc, char *argv[]) { char *arguments[3]; unsigned retries; int cmd, r; + static const char* const dirs[] = {SYSTEM_SHUTDOWN_PATH, NULL}; log_parse_environment(); r = parse_argv(argc, argv); @@ -312,7 +302,7 @@ int main(int argc, char *argv[]) { arguments[0] = NULL; arguments[1] = arg_verb; arguments[2] = NULL; - execute_directory(SYSTEM_SHUTDOWN_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments); + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments); if (!in_container && !in_initrd() && access("/run/initramfs/shutdown", X_OK) == 0) { @@ -371,7 +361,7 @@ int main(int argc, char *argv[]) { execv(args[0], (char * const *) args); _exit(EXIT_FAILURE); } else - wait_for_terminate_and_warn("kexec", pid); + wait_for_terminate_and_warn("kexec", pid, true); } cmd = RB_AUTOBOOT;