From 9867fd82df754aaa31bab9010585acc5b920e0c1 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Tue, 1 Jun 2021 12:50:48 +0200 Subject: [PATCH] Check correct struct member to determine if / has 'ro' flag Signed-off-by: Joachim Wiberg --- src/finit.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/finit.c b/src/finit.c index c2369e82..229ee6d0 100644 --- a/src/finit.c +++ b/src/finit.c @@ -149,6 +149,25 @@ static int fsck_all(void) } #ifndef SYSROOT +/* If / is not listed in fstab, or listed as 'ro', leave it alone */ +static int fs_readonly_root(struct fstab *fs) +{ + char *tok, *str; + + if (!fs) + return 1; + + str = fs->fs_mntops; + while ((tok = strtok(str, ","))) { + if (!strcmp(tok, "ro")) + return 1; + + str = NULL; + } + + return 0; +} + static void fs_remount_root(int fsckerr) { struct fstab *fs; @@ -161,8 +180,7 @@ static void fs_remount_root(int fsckerr) break; } - /* If / is not listed in fstab, or listed as 'ro', leave it alone */ - if (!fs || !strcmp(fs->fs_type, "ro")) + if (fs_readonly_root(fs)) goto out; if (fsckerr)