switch-root: reopen /dev/console before we switch root
This commit is contained in:
+22
-1
@@ -2940,7 +2940,8 @@ int make_stdio(int fd) {
|
||||
int make_null_stdio(void) {
|
||||
int null_fd;
|
||||
|
||||
if ((null_fd = open("/dev/null", O_RDWR|O_NOCTTY)) < 0)
|
||||
null_fd = open("/dev/null", O_RDWR|O_NOCTTY);
|
||||
if (null_fd < 0)
|
||||
return -errno;
|
||||
|
||||
return make_stdio(null_fd);
|
||||
@@ -5844,3 +5845,23 @@ void warn_melody(void) {
|
||||
ioctl(fd, KIOCSOUND, 0);
|
||||
close_nointr_nofail(fd);
|
||||
}
|
||||
|
||||
int make_console_stdio(void) {
|
||||
int fd, r;
|
||||
|
||||
/* Make /dev/console the controlling terminal and stdin/stdout/stderr */
|
||||
|
||||
fd = acquire_terminal("/dev/console", false, true, true, (usec_t) -1);
|
||||
if (fd < 0) {
|
||||
log_error("Failed to acquire terminal: %s", strerror(-fd));
|
||||
return fd;
|
||||
}
|
||||
|
||||
r = make_stdio(fd);
|
||||
if (r < 0) {
|
||||
log_error("Failed to duplicate terminal fd: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -278,6 +278,7 @@ char *format_timespan(char *buf, size_t l, usec_t t);
|
||||
|
||||
int make_stdio(int fd);
|
||||
int make_null_stdio(void);
|
||||
int make_console_stdio(void);
|
||||
|
||||
unsigned long long random_ull(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user