forked from Minki/linux
namei: shift interpretation of LOOKUP_FOLLOW inside should_follow_link()
Simplifies the arguments both for it and for walk_component() Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
ba8f46135a
commit
7f49b47109
14
fs/namei.c
14
fs/namei.c
@ -1737,7 +1737,7 @@ static inline int should_follow_link(struct nameidata *nd, struct path *link,
|
||||
{
|
||||
if (likely(!d_is_symlink(link->dentry)))
|
||||
return 0;
|
||||
if (!follow)
|
||||
if (!follow && !(nd->flags & LOOKUP_FOLLOW))
|
||||
return 0;
|
||||
/* make sure that d_is_symlink above matches inode */
|
||||
if (nd->flags & LOOKUP_RCU) {
|
||||
@ -2248,12 +2248,7 @@ static inline int lookup_last(struct nameidata *nd)
|
||||
nd->flags |= LOOKUP_FOLLOW | LOOKUP_DIRECTORY;
|
||||
|
||||
nd->flags &= ~LOOKUP_PARENT;
|
||||
return walk_component(nd,
|
||||
nd->flags & LOOKUP_FOLLOW
|
||||
? nd->depth
|
||||
? WALK_PUT | WALK_GET
|
||||
: WALK_GET
|
||||
: 0);
|
||||
return walk_component(nd, nd->depth ? WALK_PUT : 0);
|
||||
}
|
||||
|
||||
/* Returns 0 and nd will be valid on success; Retuns error, otherwise. */
|
||||
@ -2623,7 +2618,7 @@ mountpoint_last(struct nameidata *nd)
|
||||
if (nd->depth)
|
||||
put_link(nd);
|
||||
path.mnt = nd->path.mnt;
|
||||
error = should_follow_link(nd, &path, nd->flags & LOOKUP_FOLLOW,
|
||||
error = should_follow_link(nd, &path, 0,
|
||||
d_backing_inode(path.dentry), 0);
|
||||
if (unlikely(error))
|
||||
return error;
|
||||
@ -3319,8 +3314,7 @@ static int do_last(struct nameidata *nd,
|
||||
finish_lookup:
|
||||
if (nd->depth)
|
||||
put_link(nd);
|
||||
error = should_follow_link(nd, &path, nd->flags & LOOKUP_FOLLOW,
|
||||
inode, seq);
|
||||
error = should_follow_link(nd, &path, 0, inode, seq);
|
||||
if (unlikely(error))
|
||||
return error;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user