1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-10 01:17:44 +03:00

core/main.c: do_switch_root(): do not remove the old root if not in initrd

Only recursively remove the old root, if we have been in an
initrd/initramfs.
This commit is contained in:
Harald Hoyer 2012-05-16 14:22:43 +02:00 committed by Lennart Poettering
parent d03bc1b814
commit e148ac5a6c

View File

@ -1180,6 +1180,7 @@ static int do_switch_root(const char *switch_root) {
int i;
int cfd = -1;
struct stat switch_root_stat, sb;
bool remove_old_root;
if (path_equal(switch_root, "/"))
return 0;
@ -1190,6 +1191,8 @@ static int do_switch_root(const char *switch_root) {
goto fail;
}
remove_old_root = in_initrd();
for (i = 0; umounts[i] != NULL; i++) {
char newmount[PATH_MAX];
@ -1215,7 +1218,8 @@ static int do_switch_root(const char *switch_root) {
goto fail;
}
cfd = open("/", O_RDONLY);
if (remove_old_root)
cfd = open("/", O_RDONLY);
if (mount(switch_root, "/", NULL, MS_MOVE, NULL) < 0) {
r = -errno;