switch_root: more clear error messages
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 15 Dec 2009 00:55:55 +0000 (01:55 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 15 Dec 2009 00:55:55 +0000 (01:55 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
util-linux/switch_root.c

index ff05518..e2da119 100644 (file)
@@ -85,12 +85,14 @@ int switch_root_main(int argc UNUSED_PARAM, char **argv)
        // Additional sanity checks: we're about to rm -rf /, so be REALLY SURE
        // we mean it. I could make this a CONFIG option, but I would get email
        // from all the people who WILL destroy their filesystems.
+       if (stat("/init", &st) != 0 || !S_ISREG(st.st_mode)) {
+               bb_error_msg_and_die("/init is not a regular file");
+       }
        statfs("/", &stfs); // this never fails
-       if (stat("/init", &st) != 0 || !S_ISREG(st.st_mode)
-        || ((unsigned)stfs.f_type != RAMFS_MAGIC
-            && (unsigned)stfs.f_type != TMPFS_MAGIC)
+       if ((unsigned)stfs.f_type != RAMFS_MAGIC
+        && (unsigned)stfs.f_type != TMPFS_MAGIC
        ) {
-               bb_error_msg_and_die("not rootfs");
+               bb_error_msg_and_die("root filesystem is not ramfs/tmpfs");
        }
 
        // Zap everything out of rootdev