diff options
Diffstat (limited to 'fs/namespace.c')
| -rw-r--r-- | fs/namespace.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index 88058de59c7c..2e10cb19c5b0 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -29,6 +29,7 @@  #include <linux/log2.h>  #include <linux/idr.h>  #include <linux/fs_struct.h> +#include <linux/fsnotify.h>  #include <asm/uaccess.h>  #include <asm/unistd.h>  #include "pnode.h" @@ -150,6 +151,9 @@ struct vfsmount *alloc_vfsmnt(const char *name)  		INIT_LIST_HEAD(&mnt->mnt_share);  		INIT_LIST_HEAD(&mnt->mnt_slave_list);  		INIT_LIST_HEAD(&mnt->mnt_slave); +#ifdef CONFIG_FSNOTIFY +		INIT_HLIST_HEAD(&mnt->mnt_fsnotify_marks); +#endif  #ifdef CONFIG_SMP  		mnt->mnt_writers = alloc_percpu(int);  		if (!mnt->mnt_writers) @@ -610,6 +614,7 @@ static inline void __mntput(struct vfsmount *mnt)  	 * provides barriers, so count_mnt_writers() below is safe.  AV  	 */  	WARN_ON(count_mnt_writers(mnt)); +	fsnotify_vfsmount_delete(mnt);  	dput(mnt->mnt_root);  	free_vfsmnt(mnt);  	deactivate_super(sb); @@ -783,7 +788,6 @@ static void show_mnt_opts(struct seq_file *m, struct vfsmount *mnt)  		{ MNT_NOATIME, ",noatime" },  		{ MNT_NODIRATIME, ",nodiratime" },  		{ MNT_RELATIME, ",relatime" }, -		{ MNT_STRICTATIME, ",strictatime" },  		{ 0, NULL }  	};  	const struct proc_fs_info *fs_infop; @@ -1984,7 +1988,7 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,  	if (flags & MS_RDONLY)  		mnt_flags |= MNT_READONLY; -	flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE | +	flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE | MS_BORN |  		   MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |  		   MS_STRICTATIME); @@ -2208,10 +2212,7 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,  		goto out1;  	} -	read_lock(¤t->fs->lock); -	root = current->fs->root; -	path_get(¤t->fs->root); -	read_unlock(¤t->fs->lock); +	get_fs_root(current->fs, &root);  	down_write(&namespace_sem);  	mutex_lock(&old.dentry->d_inode->i_mutex);  	error = -EINVAL;  | 
