Overlayfs should be mounted read-only when upper fs is r/o or nonexistend.
But now it can be remounted read-write and this can causes kernel panic.
So we should prevent read-write remount when the above situation.

Signed-off-by: Seunghun Lee <[email protected]>
---
 fs/overlayfs/super.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 84f3144..8944651 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -522,10 +522,21 @@ static int ovl_show_options(struct seq_file *m, struct 
dentry *dentry)
        return 0;
 }
 
+static int ovl_remount(struct super_block *sb, int *flags, char *data)
+{
+       struct ovl_fs *ufs = sb->s_fs_info;
+
+       if (!ufs->upper_mnt || (ufs->upper_mnt->mnt_sb->s_flags & MS_RDONLY))
+               *flags |= MS_RDONLY;
+
+       return 0;
+}
+
 static const struct super_operations ovl_super_operations = {
        .put_super      = ovl_put_super,
        .statfs         = ovl_statfs,
        .show_options   = ovl_show_options,
+       .remount_fs     = ovl_remount,
 };
 
 enum {
-- 
2.1.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to