trailing_symlink: nd->depth massage, part 7
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 4 May 2015 01:04:07 +0000 (21:04 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 11 May 2015 02:20:05 +0000 (22:20 -0400)
move decrement of nd->depth on successful returns into the callers.

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

index 93b5f7353e705de6799ed457d4908ee0c6d7f3e3..9df1c7a48e7a0e821eb6c5c350e497eec985e384 100644 (file)
@@ -2009,10 +2009,8 @@ static int trailing_symlink(struct nameidata *nd)
        s = get_link(nd);
        if (unlikely(IS_ERR(s)))
                return PTR_ERR(s);
-       if (unlikely(!s)) {
-               nd->depth--;
+       if (unlikely(!s))
                return 0;
-       }
        if (*s == '/') {
                if (!nd->root.mnt)
                        set_root(nd);
@@ -2028,7 +2026,6 @@ static int trailing_symlink(struct nameidata *nd)
                put_link(nd);
                return error;
        }
-       nd->depth--;
        return 0;
 }
 
@@ -2069,6 +2066,7 @@ static int path_lookupat(int dfd, const struct filename *name,
                        if (err)
                                break;
                        err = lookup_last(nd);
+                       nd->depth--;
                        put_link(nd);
                }
        }
@@ -2418,6 +2416,7 @@ path_mountpoint(int dfd, const struct filename *name, struct path *path,
                if (err)
                        break;
                err = mountpoint_last(nd, path);
+               nd->depth--;
                put_link(nd);
        }
 out:
@@ -3302,6 +3301,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
                if (unlikely(error))
                        break;
                error = do_last(nd, file, op, &opened, pathname);
+               nd->depth--;
                put_link(nd);
        }
 out: