Commit bab77ebf authored by Al Viro's avatar Al Viro

switch follow_up() to struct path

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e64c390c
...@@ -212,7 +212,7 @@ static int find_autofs_mount(const char *pathname, ...@@ -212,7 +212,7 @@ static int find_autofs_mount(const char *pathname,
err = 0; err = 0;
} }
} }
if (!follow_up(&path.mnt, &path.dentry)) if (!follow_up(&path))
break; break;
} }
path_put(&path); path_put(&path);
......
...@@ -675,23 +675,23 @@ static inline int do_follow_link(struct path *path, struct nameidata *nd) ...@@ -675,23 +675,23 @@ static inline int do_follow_link(struct path *path, struct nameidata *nd)
return err; return err;
} }
int follow_up(struct vfsmount **mnt, struct dentry **dentry) int follow_up(struct path *path)
{ {
struct vfsmount *parent; struct vfsmount *parent;
struct dentry *mountpoint; struct dentry *mountpoint;
spin_lock(&vfsmount_lock); spin_lock(&vfsmount_lock);
parent=(*mnt)->mnt_parent; parent = path->mnt->mnt_parent;
if (parent == *mnt) { if (parent == path->mnt) {
spin_unlock(&vfsmount_lock); spin_unlock(&vfsmount_lock);
return 0; return 0;
} }
mntget(parent); mntget(parent);
mountpoint=dget((*mnt)->mnt_mountpoint); mountpoint = dget(path->mnt->mnt_mountpoint);
spin_unlock(&vfsmount_lock); spin_unlock(&vfsmount_lock);
dput(*dentry); dput(path->dentry);
*dentry = mountpoint; path->dentry = mountpoint;
mntput(*mnt); mntput(path->mnt);
*mnt = parent; path->mnt = parent;
return 1; return 1;
} }
......
...@@ -173,7 +173,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp, ...@@ -173,7 +173,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp,
.dentry = dget(dparent)}; .dentry = dget(dparent)};
while (path.dentry == path.mnt->mnt_root && while (path.dentry == path.mnt->mnt_root &&
follow_up(&path.mnt, &path.dentry)) follow_up(&path))
; ;
dp = dget_parent(path.dentry); dp = dget_parent(path.dentry);
dput(path.dentry); dput(path.dentry);
......
...@@ -79,7 +79,7 @@ extern struct dentry *lookup_one_len(const char *, struct dentry *, int); ...@@ -79,7 +79,7 @@ extern struct dentry *lookup_one_len(const char *, struct dentry *, int);
extern struct dentry *lookup_one_noperm(const char *, struct dentry *); extern struct dentry *lookup_one_noperm(const char *, struct dentry *);
extern int follow_down(struct vfsmount **, struct dentry **); extern int follow_down(struct vfsmount **, struct dentry **);
extern int follow_up(struct vfsmount **, struct dentry **); extern int follow_up(struct path *);
extern struct dentry *lock_rename(struct dentry *, struct dentry *); extern struct dentry *lock_rename(struct dentry *, struct dentry *);
extern void unlock_rename(struct dentry *, struct dentry *); extern void unlock_rename(struct dentry *, struct dentry *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment