On a system that does not use an initramfs, /dev/root is always listed in /proc/mounts. This breaks software which scans /proc/mounts to determine which file systems are mounted since /dev/root is not a valid device name. This changes that processing so that "/dev/root" is only added to /proc/mounts if a root device is not specified with the root= option on the kernel command line. Signed-off-by: William Hubbs <w.d.hubbs@xxxxxxxxx> --- init/do_mounts.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/init/do_mounts.c b/init/do_mounts.c index 1d1b634..efc37d2 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -480,7 +480,10 @@ void __init change_floppy(char *fmt, ...) va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); - fd = sys_open("/dev/root", O_RDWR | O_NDELAY, 0); + if (saved_root_name[0]) + fd = sys_open(saved_root_name, O_RDWR | O_NDELAY, 0); + else + fd = sys_open("/dev/root", O_RDWR | O_NDELAY, 0); if (fd >= 0) { sys_ioctl(fd, FDEJECT, 0); sys_close(fd); @@ -523,8 +526,13 @@ void __init mount_root(void) } #endif #ifdef CONFIG_BLOCK - create_dev("/dev/root", ROOT_DEV); - mount_block_root("/dev/root", root_mountflags); + if (saved_root_name[0]) { + create_dev(saved_root_name, ROOT_DEV); + mount_block_root(saved_root_name, root_mountflags); + } else { + create_dev("/dev/root", ROOT_DEV); + mount_block_root("/dev/root", root_mountflags); + } #endif } -- 1.7.12.4 -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html