OSDN Git Service

get_link: nd->depth massage, part 6
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 4 May 2015 01:02:40 +0000 (21:02 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 11 May 2015 02:20:04 +0000 (22:20 -0400)
make get_link() increment nd->depth on successful exit

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c

index 5753f46..93b5f73 100644 (file)
@@ -918,8 +918,10 @@ const char *get_link(struct nameidata *nd)
 out:
                        path_put(&nd->path);
                        path_put(&last->link);
+                       return res;
                }
        }
+       nd->depth++;
        return res;
 }
 
@@ -1830,11 +1832,9 @@ Walked:
                        }
 
                        s = get_link(nd);
-                       nd->depth++;
 
                        if (unlikely(IS_ERR(s))) {
                                err = PTR_ERR(s);
-                               nd->depth--;
                                goto Err;
                        }
                        err = 0;
@@ -2009,7 +2009,6 @@ static int trailing_symlink(struct nameidata *nd)
        s = get_link(nd);
        if (unlikely(IS_ERR(s)))
                return PTR_ERR(s);
-       nd->depth++;
        if (unlikely(!s)) {
                nd->depth--;
                return 0;