diff --git a/fs/namei.c b/fs/namei.c index 678aeef854901e8ff890d28d1ea494caaaa22b0d..c5eb77a5797438df77ce8008b37d50c7096dd72a 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1865,11 +1865,13 @@ static int link_path_walk(const char *name, struct nameidata *nd) ; } nd->inode = nd->path.dentry->d_inode; - nd->stack[nd->depth - 1].name = name; - if (!*s) - goto OK; - name = s; - continue; + if (unlikely(!*s)) { + put_link(nd); + } else { + nd->stack[nd->depth - 1].name = name; + name = s; + continue; + } } } if (!d_can_lookup(nd->path.dentry)) {