I will send a follow up. This change has a bug.
On Fri, Mar 24, 2017 at 3:40 PM, Denys Vlasenko <[email protected]> wrote: > Applied, thanks > > On Fri, Mar 24, 2017 at 12:44 AM, Andrei Gherzan <[email protected]> wrote: >> Busybox is very often used in initramfs at the end of which usually >> there is a switch_root to the actual rootfs. There are many cases where >> the console kernel argument is either just a placeholder (for example >> RaspberryPi uses serial0 and serial1) or configured as null to avoid any >> console messages - usually you would see such of a setup in production >> environments. >> >> Currently busybox bails out if can't open the console argument. If this >> happenes in initramfs and if the console=null for example, you get in a >> blind kernel panic. Avoid this by checking if the console exists and if >> not warn and continue. >> >> Signed-off-by: Andrei Gherzan <[email protected]> >> --- >> util-linux/switch_root.c | 15 +++++++++------ >> 1 file changed, 9 insertions(+), 6 deletions(-) >> >> diff --git a/util-linux/switch_root.c b/util-linux/switch_root.c >> index 6034485d7..a39ec0ba7 100644 >> --- a/util-linux/switch_root.c >> +++ b/util-linux/switch_root.c >> @@ -39,6 +39,7 @@ >> >> #include <sys/vfs.h> >> #include <sys/mount.h> >> +#include <unistd.h> >> #include "libbb.h" >> // Make up for header deficiencies >> #ifndef RAMFS_MAGIC >> @@ -140,12 +141,14 @@ int switch_root_main(int argc UNUSED_PARAM, char >> **argv) >> /*xchdir("/"); - done in xchroot */ >> >> // If a new console specified, redirect stdin/stdout/stderr to it >> - if (console) { >> - close(0); >> - xopen(console, O_RDWR); >> - xdup2(0, 1); >> - xdup2(0, 2); >> - } >> + if (console) >> + if (access(console, F_OK)) { >> + close(0); >> + xopen(console, O_RDWR); >> + xdup2(0, 1); >> + xdup2(0, 2); >> + } else >> + bb_error_msg("specified console doesn't exist, >> ignoring"); >> >> // Exec real init >> execv(argv[0], argv); >> -- >> 2.12.0 >> >> _______________________________________________ >> busybox mailing list >> [email protected] >> http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
