[PATCH 3/9] vfs: fix per mount read-write

From: Miklos Szeredi
Date: Tue Oct 05 2010 - 06:32:32 EST


From: Miklos Szeredi <mszeredi@xxxxxxx>

Don't allow remounting the vfsmount read-write if the superblock is
read-only. Return -EROFS in this case.

Rename __mnt_unmake_readonly() to mnt_make_writable() to match
mnt_make_readonly().

Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxx>
---
fs/namespace.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

Index: linux-2.6/fs/namespace.c
===================================================================
--- linux-2.6.orig/fs/namespace.c 2010-09-30 16:53:30.000000000 +0200
+++ linux-2.6/fs/namespace.c 2010-09-30 16:57:47.000000000 +0200
@@ -399,11 +399,18 @@ static int mnt_make_readonly(struct vfsm
return ret;
}

-static void __mnt_unmake_readonly(struct vfsmount *mnt)
+static int mnt_make_writable(struct vfsmount *mnt)
{
+ int err = 0;
+
br_write_lock(vfsmount_lock);
- mnt->mnt_flags &= ~MNT_READONLY;
+ if (mnt->mnt_sb->s_flags & MS_RDONLY)
+ err = -EROFS;
+ else
+ mnt->mnt_flags &= ~MNT_READONLY;
br_write_unlock(vfsmount_lock);
+
+ return err;
}

void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb)
@@ -1600,7 +1607,7 @@ static int change_mount_flags(struct vfs
if (readonly_request)
error = mnt_make_readonly(mnt);
else
- __mnt_unmake_readonly(mnt);
+ error = mnt_make_writable(mnt);
return error;
}


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