From: Al Viro Date: Wed, 22 Apr 2015 15:27:43 +0000 (-0400) Subject: namei: take O_NOFOLLOW treatment into do_last() X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f488443d1dc50454acd549ddd856421e8f961f98;p=linux-beck.git namei: take O_NOFOLLOW treatment into do_last() Signed-off-by: Al Viro --- 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;