}
static int pivot_to_new_root(void) {
- int fd;
-
- chdir("/run/initramfs");
+ if (chdir("/run/initramfs") < 0) {
+ log_error("Failed to change directory to /run/initramfs: %m");
+ return -errno;
+ }
/*
In case some evil process made "/" MS_SHARED
}
chroot(".");
- log_info("Successfully changed into root pivot.");
- fd = open("/dev/console", O_RDWR);
- if (fd < 0)
- log_error("Failed to open /dev/console: %m");
- else {
- make_stdio(fd);
+ setsid();
+ make_console_stdio();
- /* Initialize the controlling terminal */
- setsid();
- ioctl(STDIN_FILENO, TIOCSCTTY, NULL);
- }
+ log_info("Successfully changed into root pivot.");
return 0;
}