Mirror MS_KERNMOUNT in ->mnt_flags
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 5 Feb 2010 14:30:46 +0000 (09:30 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 3 Mar 2010 19:08:00 +0000 (14:08 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namespace.c
fs/super.c
include/linux/mount.h

index b0b15cc..ffa3843 100644 (file)
@@ -1701,7 +1701,7 @@ int do_add_mount(struct vfsmount *newmnt, struct path *path,
 {
        int err;
 
-       mnt_flags &= ~(MNT_SHARED | MNT_WRITE_HOLD);
+       mnt_flags &= ~(MNT_SHARED | MNT_WRITE_HOLD | MNT_INTERNAL);
 
        down_write(&namespace_sem);
        /* Something was mounted here while we slept */
index 903896e..f35ac60 100644 (file)
@@ -937,6 +937,9 @@ vfs_kern_mount(struct file_system_type *type, int flags, const char *name, void
        if (!mnt)
                goto out;
 
+       if (flags & MS_KERNMOUNT)
+               mnt->mnt_flags = MNT_INTERNAL;
+
        if (data && !(type->fs_flags & FS_BINARY_MOUNTDATA)) {
                secdata = alloc_secdata();
                if (!secdata)
index 1638961..ca726eb 100644 (file)
@@ -45,6 +45,8 @@ struct mnt_namespace;
 #define MNT_PROPAGATION_MASK   (MNT_SHARED | MNT_UNBINDABLE)
 
 
+#define MNT_INTERNAL   0x4000
+
 struct vfsmount {
        struct list_head mnt_hash;
        struct vfsmount *mnt_parent;    /* fs we are mounted on */