diff options
| -rw-r--r-- | fs/afs/mntpt.c | 2 | ||||
| -rw-r--r-- | fs/cifs/cifs_dfs_ref.c | 2 | ||||
| -rw-r--r-- | fs/namespace.c | 16 | ||||
| -rw-r--r-- | fs/nfs/namespace.c | 2 | ||||
| -rw-r--r-- | include/linux/mount.h | 3 |
5 files changed, 13 insertions, 12 deletions
diff --git a/fs/afs/mntpt.c b/fs/afs/mntpt.c index 2f5503902c3..78db4953a80 100644 --- a/fs/afs/mntpt.c +++ b/fs/afs/mntpt.c | |||
| @@ -232,7 +232,7 @@ static void *afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd) | |||
| 232 | } | 232 | } |
| 233 | 233 | ||
| 234 | mntget(newmnt); | 234 | mntget(newmnt); |
| 235 | err = do_add_mount(newmnt, nd, MNT_SHRINKABLE, &afs_vfsmounts); | 235 | err = do_add_mount(newmnt, &nd->path, MNT_SHRINKABLE, &afs_vfsmounts); |
| 236 | switch (err) { | 236 | switch (err) { |
| 237 | case 0: | 237 | case 0: |
| 238 | path_put(&nd->path); | 238 | path_put(&nd->path); |
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c index d82374c9e32..d2c8eef84f3 100644 --- a/fs/cifs/cifs_dfs_ref.c +++ b/fs/cifs/cifs_dfs_ref.c | |||
| @@ -226,7 +226,7 @@ static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd, | |||
| 226 | int err; | 226 | int err; |
| 227 | 227 | ||
| 228 | mntget(newmnt); | 228 | mntget(newmnt); |
| 229 | err = do_add_mount(newmnt, nd, nd->path.mnt->mnt_flags, mntlist); | 229 | err = do_add_mount(newmnt, &nd->path, nd->path.mnt->mnt_flags, mntlist); |
| 230 | switch (err) { | 230 | switch (err) { |
| 231 | case 0: | 231 | case 0: |
| 232 | path_put(&nd->path); | 232 | path_put(&nd->path); |
diff --git a/fs/namespace.c b/fs/namespace.c index 411728c0c8b..6e283c93b50 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
| @@ -1667,31 +1667,31 @@ static noinline int do_new_mount(struct nameidata *nd, char *type, int flags, | |||
| 1667 | if (IS_ERR(mnt)) | 1667 | if (IS_ERR(mnt)) |
| 1668 | return PTR_ERR(mnt); | 1668 | return PTR_ERR(mnt); |
| 1669 | 1669 | ||
| 1670 | return do_add_mount(mnt, nd, mnt_flags, NULL); | 1670 | return do_add_mount(mnt, &nd->path, mnt_flags, NULL); |
| 1671 | } | 1671 | } |
| 1672 | 1672 | ||
| 1673 | /* | 1673 | /* |
| 1674 | * add a mount into a namespace's mount tree | 1674 | * add a mount into a namespace's mount tree |
| 1675 | * - provide the option of adding the new mount to an expiration list | 1675 | * - provide the option of adding the new mount to an expiration list |
| 1676 | */ | 1676 | */ |
| 1677 | int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd, | 1677 | int do_add_mount(struct vfsmount *newmnt, struct path *path, |
| 1678 | int mnt_flags, struct list_head *fslist) | 1678 | int mnt_flags, struct list_head *fslist) |
| 1679 | { | 1679 | { |
| 1680 | int err; | 1680 | int err; |
| 1681 | 1681 | ||
| 1682 | down_write(&namespace_sem); | 1682 | down_write(&namespace_sem); |
| 1683 | /* Something was mounted here while we slept */ | 1683 | /* Something was mounted here while we slept */ |
| 1684 | while (d_mountpoint(nd->path.dentry) && | 1684 | while (d_mountpoint(path->dentry) && |
| 1685 | follow_down(&nd->path.mnt, &nd->path.dentry)) | 1685 | follow_down(&path->mnt, &path->dentry)) |
| 1686 | ; | 1686 | ; |
| 1687 | err = -EINVAL; | 1687 | err = -EINVAL; |
| 1688 | if (!check_mnt(nd->path.mnt)) | 1688 | if (!check_mnt(path->mnt)) |
| 1689 | goto unlock; | 1689 | goto unlock; |
| 1690 | 1690 | ||
| 1691 | /* Refuse the same filesystem on the same mount point */ | 1691 | /* Refuse the same filesystem on the same mount point */ |
| 1692 | err = -EBUSY; | 1692 | err = -EBUSY; |
| 1693 | if (nd->path.mnt->mnt_sb == newmnt->mnt_sb && | 1693 | if (path->mnt->mnt_sb == newmnt->mnt_sb && |
| 1694 | nd->path.mnt->mnt_root == nd->path.dentry) | 1694 | path->mnt->mnt_root == path->dentry) |
| 1695 | goto unlock; | 1695 | goto unlock; |
| 1696 | 1696 | ||
| 1697 | err = -EINVAL; | 1697 | err = -EINVAL; |
| @@ -1699,7 +1699,7 @@ int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd, | |||
| 1699 | goto unlock; | 1699 | goto unlock; |
| 1700 | 1700 | ||
| 1701 | newmnt->mnt_flags = mnt_flags; | 1701 | newmnt->mnt_flags = mnt_flags; |
| 1702 | if ((err = graft_tree(newmnt, &nd->path))) | 1702 | if ((err = graft_tree(newmnt, path))) |
| 1703 | goto unlock; | 1703 | goto unlock; |
| 1704 | 1704 | ||
| 1705 | if (fslist) /* add to the specified expiration list */ | 1705 | if (fslist) /* add to the specified expiration list */ |
diff --git a/fs/nfs/namespace.c b/fs/nfs/namespace.c index 2f285ef7639..66df08dd1ca 100644 --- a/fs/nfs/namespace.c +++ b/fs/nfs/namespace.c | |||
| @@ -129,7 +129,7 @@ static void * nfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
| 129 | goto out_err; | 129 | goto out_err; |
| 130 | 130 | ||
| 131 | mntget(mnt); | 131 | mntget(mnt); |
| 132 | err = do_add_mount(mnt, nd, nd->path.mnt->mnt_flags|MNT_SHRINKABLE, | 132 | err = do_add_mount(mnt, &nd->path, nd->path.mnt->mnt_flags|MNT_SHRINKABLE, |
| 133 | &nfs_automount_list); | 133 | &nfs_automount_list); |
| 134 | if (err < 0) { | 134 | if (err < 0) { |
| 135 | mntput(mnt); | 135 | mntput(mnt); |
diff --git a/include/linux/mount.h b/include/linux/mount.h index b5efaa2132a..30a1d63b6fb 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h | |||
| @@ -105,7 +105,8 @@ extern struct vfsmount *vfs_kern_mount(struct file_system_type *type, | |||
| 105 | 105 | ||
| 106 | struct nameidata; | 106 | struct nameidata; |
| 107 | 107 | ||
| 108 | extern int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd, | 108 | struct path; |
| 109 | extern int do_add_mount(struct vfsmount *newmnt, struct path *path, | ||
| 109 | int mnt_flags, struct list_head *fslist); | 110 | int mnt_flags, struct list_head *fslist); |
| 110 | 111 | ||
| 111 | extern void mark_mounts_for_expiry(struct list_head *mounts); | 112 | extern void mark_mounts_for_expiry(struct list_head *mounts); |
