X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fswitch-root.c;h=ca3875628aa2be32d6b9a8a4e906cdf66a05893b;hb=4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4f;hp=c5b635d17d8efe537f5fba319163380bde84ae18;hpb=56f64d95763a799ba4475daf44d8e9f72a1bd474;p=elogind.git diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c index c5b635d17..ca3875628 100644 --- a/src/shared/switch-root.c +++ b/src/shared/switch-root.c @@ -56,10 +56,8 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot, old_root_remove = in_initrd(); - if (stat(new_root, &new_root_stat) < 0) { - log_error_errno(errno, "Failed to stat directory %s: %m", new_root); - return -errno; - } + if (stat(new_root, &new_root_stat) < 0) + return log_error_errno(errno, "Failed to stat directory %s: %m", new_root); /* Work-around for kernel design: the kernel refuses switching * root if any file systems are mounted MS_SHARED. Hence @@ -109,10 +107,8 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot, * switch_root() nevertheless. */ (void) base_filesystem_create(new_root); - if (chdir(new_root) < 0) { - log_error_errno(errno, "Failed to change directory to %s: %m", new_root); - return -errno; - } + if (chdir(new_root) < 0) + return log_error_errno(errno, "Failed to change directory to %s: %m", new_root); if (old_root_remove) { old_root_fd = open("/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY|O_DIRECTORY); @@ -132,20 +128,14 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot, oldroot, errno == ENOENT ? "ignoring" : "leaving it around"); - } else if (mount(new_root, "/", NULL, MS_MOVE, NULL) < 0) { - log_error_errno(errno, "Failed to mount moving %s to /: %m", new_root); - return -errno; - } + } else if (mount(new_root, "/", NULL, MS_MOVE, NULL) < 0) + return log_error_errno(errno, "Failed to mount moving %s to /: %m", new_root); - if (chroot(".") < 0) { - log_error_errno(errno, "Failed to change root: %m"); - return -errno; - } + if (chroot(".") < 0) + return log_error_errno(errno, "Failed to change root: %m"); - if (chdir("/") < 0) { - log_error_errno(errno, "Failed to change directory: %m"); - return -errno; - } + if (chdir("/") < 0) + return log_error_errno(errno, "Failed to change directory: %m"); if (old_root_fd >= 0) { struct stat rb;