diff --git a/[refs] b/[refs] index 89cfec78aaef..55f66295564f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3151527ee007b73a0ebd296010f1c0454a919c7d +refs/heads/master: 90563b198e4c6674c63672fae1923da467215f45 diff --git a/trunk/fs/namespace.c b/trunk/fs/namespace.c index a3035223d421..8505b5ece5de 100644 --- a/trunk/fs/namespace.c +++ b/trunk/fs/namespace.c @@ -1713,6 +1713,9 @@ static int change_mount_flags(struct vfsmount *mnt, int ms_flags) if (readonly_request == __mnt_is_readonly(mnt)) return 0; + if (mnt->mnt_flags & MNT_LOCK_READONLY) + return -EPERM; + if (readonly_request) error = mnt_make_readonly(real_mount(mnt)); else diff --git a/trunk/include/linux/mount.h b/trunk/include/linux/mount.h index d7029f4a191a..73005f9957ea 100644 --- a/trunk/include/linux/mount.h +++ b/trunk/include/linux/mount.h @@ -47,6 +47,8 @@ struct mnt_namespace; #define MNT_INTERNAL 0x4000 +#define MNT_LOCK_READONLY 0x400000 + struct vfsmount { struct dentry *mnt_root; /* root of the mounted tree */ struct super_block *mnt_sb; /* pointer to superblock */