Loading fs/autofs4/dev-ioctl.c +1 −1 Original line number Diff line number Diff line Loading @@ -212,7 +212,7 @@ static int find_autofs_mount(const char *pathname, err = 0; } } if (!follow_up(&path.mnt, &path.dentry)) if (!follow_up(&path)) break; } path_put(&path); Loading fs/namei.c +8 −8 Original line number Diff line number Diff line Loading @@ -675,23 +675,23 @@ static inline int do_follow_link(struct path *path, struct nameidata *nd) return err; } int follow_up(struct vfsmount **mnt, struct dentry **dentry) int follow_up(struct path *path) { struct vfsmount *parent; struct dentry *mountpoint; spin_lock(&vfsmount_lock); parent=(*mnt)->mnt_parent; if (parent == *mnt) { parent = path->mnt->mnt_parent; if (parent == path->mnt) { spin_unlock(&vfsmount_lock); return 0; } mntget(parent); mountpoint=dget((*mnt)->mnt_mountpoint); mountpoint = dget(path->mnt->mnt_mountpoint); spin_unlock(&vfsmount_lock); dput(*dentry); *dentry = mountpoint; mntput(*mnt); *mnt = parent; dput(path->dentry); path->dentry = mountpoint; mntput(path->mnt); path->mnt = parent; return 1; } Loading fs/nfsd/vfs.c +1 −1 Original line number Diff line number Diff line Loading @@ -173,7 +173,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp, .dentry = dget(dparent)}; while (path.dentry == path.mnt->mnt_root && follow_up(&path.mnt, &path.dentry)) follow_up(&path)) ; dp = dget_parent(path.dentry); dput(path.dentry); Loading include/linux/namei.h +1 −1 Original line number Diff line number Diff line Loading @@ -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 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 void unlock_rename(struct dentry *, struct dentry *); Loading Loading
fs/autofs4/dev-ioctl.c +1 −1 Original line number Diff line number Diff line Loading @@ -212,7 +212,7 @@ static int find_autofs_mount(const char *pathname, err = 0; } } if (!follow_up(&path.mnt, &path.dentry)) if (!follow_up(&path)) break; } path_put(&path); Loading
fs/namei.c +8 −8 Original line number Diff line number Diff line Loading @@ -675,23 +675,23 @@ static inline int do_follow_link(struct path *path, struct nameidata *nd) return err; } int follow_up(struct vfsmount **mnt, struct dentry **dentry) int follow_up(struct path *path) { struct vfsmount *parent; struct dentry *mountpoint; spin_lock(&vfsmount_lock); parent=(*mnt)->mnt_parent; if (parent == *mnt) { parent = path->mnt->mnt_parent; if (parent == path->mnt) { spin_unlock(&vfsmount_lock); return 0; } mntget(parent); mountpoint=dget((*mnt)->mnt_mountpoint); mountpoint = dget(path->mnt->mnt_mountpoint); spin_unlock(&vfsmount_lock); dput(*dentry); *dentry = mountpoint; mntput(*mnt); *mnt = parent; dput(path->dentry); path->dentry = mountpoint; mntput(path->mnt); path->mnt = parent; return 1; } Loading
fs/nfsd/vfs.c +1 −1 Original line number Diff line number Diff line Loading @@ -173,7 +173,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp, .dentry = dget(dparent)}; while (path.dentry == path.mnt->mnt_root && follow_up(&path.mnt, &path.dentry)) follow_up(&path)) ; dp = dget_parent(path.dentry); dput(path.dentry); Loading
include/linux/namei.h +1 −1 Original line number Diff line number Diff line Loading @@ -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 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 void unlock_rename(struct dentry *, struct dentry *); Loading