From f488443d1dc50454acd549ddd856421e8f961f98 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Wed, 22 Apr 2015 11:27:43 -0400 Subject: [PATCH] namei: take O_NOFOLLOW treatment into do_last() Signed-off-by: Al Viro --- fs/namei.c | 11 +++++------ 1 file 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 @@ 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; } @@ -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;