reserve_stack(): switch to __nd_alloc_stack()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 3 Mar 2020 16:25:31 +0000 (11:25 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 2 Apr 2020 05:09:26 +0000 (01:09 -0400)
expand the call of nd_alloc_stack() into it (and don't
recheck the depth on the second call)

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

index 6025406..0539a26 100644 (file)
@@ -566,15 +566,6 @@ static bool path_connected(struct vfsmount *mnt, struct dentry *dentry)
        return is_subdir(dentry, mnt->mnt_root);
 }
 
-static inline int nd_alloc_stack(struct nameidata *nd)
-{
-       if (likely(nd->depth != EMBEDDED_LEVELS))
-               return 0;
-       if (likely(nd->stack != nd->internal))
-               return 0;
-       return __nd_alloc_stack(nd);
-}
-
 static void drop_links(struct nameidata *nd)
 {
        int i = nd->depth;
@@ -1586,7 +1577,13 @@ static int reserve_stack(struct nameidata *nd, struct path *link, unsigned seq)
 
        if (unlikely(nd->total_link_count++ >= MAXSYMLINKS))
                return -ELOOP;
-       error = nd_alloc_stack(nd);
+
+       if (likely(nd->depth != EMBEDDED_LEVELS))
+               return 0;
+       if (likely(nd->stack != nd->internal))
+               return 0;
+
+       error = __nd_alloc_stack(nd);
        if (likely(!error))
                return 0;
        if (error == -ECHILD) {
@@ -1597,7 +1594,7 @@ static int reserve_stack(struct nameidata *nd, struct path *link, unsigned seq)
                if (unlikely(!grabbed_link))
                        error = -ECHILD;
                if (!error)
-                       error = nd_alloc_stack(nd);
+                       error = __nd_alloc_stack(nd);
        }
        return error;
 }