aboutsummaryrefslogtreecommitdiffstats
path: root/fs/namei.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2015-04-22 11:27:43 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2015-05-10 22:18:30 -0400
commitf488443d1dc50454acd549ddd856421e8f961f98 (patch)
tree18947387d8ff7d64985ddcd09adcfb2a2a61b24f /fs/namei.c
parentuninline walk_component() (diff)
downloadlinux-dev-f488443d1dc50454acd549ddd856421e8f961f98.tar.xz
linux-dev-f488443d1dc50454acd549ddd856421e8f961f98.zip
namei: take O_NOFOLLOW treatment into do_last()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to '')
-rw-r--r--fs/namei.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/namei.c b/fs/namei.c
index a77f9ca2c3e7..4c1a8bf917e4 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -3059,6 +3059,11 @@ finish_lookup:
}
}
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;
}
@@ -3243,12 +3248,6 @@ static struct file *path_openat(int dfd, struct filename *pathname,
while (unlikely(error > 0)) { /* trailing symlink */
struct path link = path;
void *cookie;
- if (!(nd->flags & LOOKUP_FOLLOW)) {
- path_put_conditional(&path, nd);
- path_put(&nd->path);
- error = -ELOOP;
- break;
- }
error = may_follow_link(&link, nd);
if (unlikely(error))
break;