Loading fs/namei.c +10 −22 Original line number Diff line number Diff line Loading @@ -1118,7 +1118,11 @@ static int follow_managed(struct path *path, struct nameidata *nd) mntput(path->mnt); if (ret == -EISDIR) ret = 0; return ret < 0 ? ret : need_mntput; if (need_mntput) nd->flags |= LOOKUP_JUMPED; if (unlikely(ret < 0)) path_put_conditional(path, nd); return ret; } int follow_down_one(struct path *path) Loading Loading @@ -1494,14 +1498,9 @@ static int lookup_fast(struct nameidata *nd, path->mnt = mnt; path->dentry = dentry; err = follow_managed(path, nd); if (unlikely(err < 0)) { path_put_conditional(path, nd); return err; } if (err) nd->flags |= LOOKUP_JUMPED; if (likely(!err)) *inode = path->dentry->d_inode; return 0; return err; need_lookup: return 1; Loading @@ -1511,7 +1510,6 @@ static int lookup_fast(struct nameidata *nd, static int lookup_slow(struct nameidata *nd, struct path *path) { struct dentry *dentry, *parent; int err; parent = nd->path.dentry; BUG_ON(nd->inode != parent->d_inode); Loading @@ -1523,14 +1521,7 @@ static int lookup_slow(struct nameidata *nd, struct path *path) return PTR_ERR(dentry); path->mnt = nd->path.mnt; path->dentry = dentry; err = follow_managed(path, nd); if (unlikely(err < 0)) { path_put_conditional(path, nd); return err; } if (err) nd->flags |= LOOKUP_JUMPED; return 0; return follow_managed(path, nd); } static inline int may_lookup(struct nameidata *nd) Loading Loading @@ -3098,10 +3089,7 @@ static int do_last(struct nameidata *nd, error = follow_managed(&path, nd); if (error < 0) goto exit_dput; if (error) nd->flags |= LOOKUP_JUMPED; goto out; BUG_ON(nd->flags & LOOKUP_RCU); inode = path.dentry->d_inode; Loading Loading
fs/namei.c +10 −22 Original line number Diff line number Diff line Loading @@ -1118,7 +1118,11 @@ static int follow_managed(struct path *path, struct nameidata *nd) mntput(path->mnt); if (ret == -EISDIR) ret = 0; return ret < 0 ? ret : need_mntput; if (need_mntput) nd->flags |= LOOKUP_JUMPED; if (unlikely(ret < 0)) path_put_conditional(path, nd); return ret; } int follow_down_one(struct path *path) Loading Loading @@ -1494,14 +1498,9 @@ static int lookup_fast(struct nameidata *nd, path->mnt = mnt; path->dentry = dentry; err = follow_managed(path, nd); if (unlikely(err < 0)) { path_put_conditional(path, nd); return err; } if (err) nd->flags |= LOOKUP_JUMPED; if (likely(!err)) *inode = path->dentry->d_inode; return 0; return err; need_lookup: return 1; Loading @@ -1511,7 +1510,6 @@ static int lookup_fast(struct nameidata *nd, static int lookup_slow(struct nameidata *nd, struct path *path) { struct dentry *dentry, *parent; int err; parent = nd->path.dentry; BUG_ON(nd->inode != parent->d_inode); Loading @@ -1523,14 +1521,7 @@ static int lookup_slow(struct nameidata *nd, struct path *path) return PTR_ERR(dentry); path->mnt = nd->path.mnt; path->dentry = dentry; err = follow_managed(path, nd); if (unlikely(err < 0)) { path_put_conditional(path, nd); return err; } if (err) nd->flags |= LOOKUP_JUMPED; return 0; return follow_managed(path, nd); } static inline int may_lookup(struct nameidata *nd) Loading Loading @@ -3098,10 +3089,7 @@ static int do_last(struct nameidata *nd, error = follow_managed(&path, nd); if (error < 0) goto exit_dput; if (error) nd->flags |= LOOKUP_JUMPED; goto out; BUG_ON(nd->flags & LOOKUP_RCU); inode = path.dentry->d_inode; Loading