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
