Loading fs/namei.c +7 −8 Original line number Diff line number Diff line Loading @@ -3046,9 +3046,7 @@ static int do_last(struct nameidata *nd, struct path *path, goto out; } finish_lookup: /* we _can_ be in RCU mode here */ if (should_follow_link(path->dentry, !(open_flag & O_PATH) || (nd->flags & LOOKUP_FOLLOW))) { if (should_follow_link(path->dentry, nd->flags & LOOKUP_FOLLOW)) { if (nd->flags & LOOKUP_RCU) { if (unlikely(nd->path.mnt != path->mnt || unlazy_walk(nd, path->dentry))) { Loading @@ -3057,14 +3055,15 @@ static int do_last(struct nameidata *nd, struct path *path, } } BUG_ON(inode != path->dentry->d_inode); if (!(nd->flags & LOOKUP_FOLLOW)) { path_put_conditional(path, nd); path_put(&nd->path); return -ELOOP; } return 1; } if (unlikely(d_is_symlink(path->dentry)) && !(open_flag & O_PATH)) { path_to_nameidata(path, nd); error = -ELOOP; goto out; } if ((nd->flags & LOOKUP_RCU) || nd->path.mnt != path->mnt) { path_to_nameidata(path, nd); } else { Loading Loading
fs/namei.c +7 −8 Original line number Diff line number Diff line Loading @@ -3046,9 +3046,7 @@ static int do_last(struct nameidata *nd, struct path *path, goto out; } finish_lookup: /* we _can_ be in RCU mode here */ if (should_follow_link(path->dentry, !(open_flag & O_PATH) || (nd->flags & LOOKUP_FOLLOW))) { if (should_follow_link(path->dentry, nd->flags & LOOKUP_FOLLOW)) { if (nd->flags & LOOKUP_RCU) { if (unlikely(nd->path.mnt != path->mnt || unlazy_walk(nd, path->dentry))) { Loading @@ -3057,14 +3055,15 @@ static int do_last(struct nameidata *nd, struct path *path, } } BUG_ON(inode != path->dentry->d_inode); if (!(nd->flags & LOOKUP_FOLLOW)) { path_put_conditional(path, nd); path_put(&nd->path); return -ELOOP; } return 1; } if (unlikely(d_is_symlink(path->dentry)) && !(open_flag & O_PATH)) { path_to_nameidata(path, nd); error = -ELOOP; goto out; } if ((nd->flags & LOOKUP_RCU) || nd->path.mnt != path->mnt) { path_to_nameidata(path, nd); } else { Loading