Skip to content

Commit

Permalink
[PATCH] pass struct path * to do_add_mount()
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Aug 1, 2008
1 parent d5686b4 commit 8d66bf5
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 12 deletions.
2 changes: 1 addition & 1 deletion fs/afs/mntpt.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ static void *afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd)
}

mntget(newmnt);
err = do_add_mount(newmnt, nd, MNT_SHRINKABLE, &afs_vfsmounts);
err = do_add_mount(newmnt, &nd->path, MNT_SHRINKABLE, &afs_vfsmounts);
switch (err) {
case 0:
path_put(&nd->path);
Expand Down
2 changes: 1 addition & 1 deletion fs/cifs/cifs_dfs_ref.c
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd,
int err;

mntget(newmnt);
err = do_add_mount(newmnt, nd, nd->path.mnt->mnt_flags, mntlist);
err = do_add_mount(newmnt, &nd->path, nd->path.mnt->mnt_flags, mntlist);
switch (err) {
case 0:
path_put(&nd->path);
Expand Down
16 changes: 8 additions & 8 deletions fs/namespace.c
Original file line number Diff line number Diff line change
Expand Up @@ -1667,39 +1667,39 @@ static noinline int do_new_mount(struct nameidata *nd, char *type, int flags,
if (IS_ERR(mnt))
return PTR_ERR(mnt);

return do_add_mount(mnt, nd, mnt_flags, NULL);
return do_add_mount(mnt, &nd->path, mnt_flags, NULL);
}

/*
* add a mount into a namespace's mount tree
* - provide the option of adding the new mount to an expiration list
*/
int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd,
int do_add_mount(struct vfsmount *newmnt, struct path *path,
int mnt_flags, struct list_head *fslist)
{
int err;

down_write(&namespace_sem);
/* Something was mounted here while we slept */
while (d_mountpoint(nd->path.dentry) &&
follow_down(&nd->path.mnt, &nd->path.dentry))
while (d_mountpoint(path->dentry) &&
follow_down(&path->mnt, &path->dentry))
;
err = -EINVAL;
if (!check_mnt(nd->path.mnt))
if (!check_mnt(path->mnt))
goto unlock;

/* Refuse the same filesystem on the same mount point */
err = -EBUSY;
if (nd->path.mnt->mnt_sb == newmnt->mnt_sb &&
nd->path.mnt->mnt_root == nd->path.dentry)
if (path->mnt->mnt_sb == newmnt->mnt_sb &&
path->mnt->mnt_root == path->dentry)
goto unlock;

err = -EINVAL;
if (S_ISLNK(newmnt->mnt_root->d_inode->i_mode))
goto unlock;

newmnt->mnt_flags = mnt_flags;
if ((err = graft_tree(newmnt, &nd->path)))
if ((err = graft_tree(newmnt, path)))
goto unlock;

if (fslist) /* add to the specified expiration list */
Expand Down
2 changes: 1 addition & 1 deletion fs/nfs/namespace.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ static void * nfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
goto out_err;

mntget(mnt);
err = do_add_mount(mnt, nd, nd->path.mnt->mnt_flags|MNT_SHRINKABLE,
err = do_add_mount(mnt, &nd->path, nd->path.mnt->mnt_flags|MNT_SHRINKABLE,
&nfs_automount_list);
if (err < 0) {
mntput(mnt);
Expand Down
3 changes: 2 additions & 1 deletion include/linux/mount.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,

struct nameidata;

extern int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd,
struct path;
extern int do_add_mount(struct vfsmount *newmnt, struct path *path,
int mnt_flags, struct list_head *fslist);

extern void mark_mounts_for_expiry(struct list_head *mounts);
Expand Down

0 comments on commit 8d66bf5

Please sign in to comment.