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:
parent
d03bc1b814
commit
e148ac5a6c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user