]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
namei: fold unlazy_link() into its sole caller
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 9 Jan 2017 03:35:31 +0000 (22:35 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 9 Jan 2017 03:35:31 +0000 (22:35 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c

index ad74877e1442c0c9ea5fca87b065e59090088b10..f08eca2b788b226b435d6dfc87cb937ddfdf2f33 100644 (file)
@@ -749,24 +749,6 @@ drop_root_mnt:
        return -ECHILD;
 }
 
-static int unlazy_link(struct nameidata *nd, struct path *link, unsigned seq)
-{
-       if (unlikely(!legitimize_path(nd, link, seq))) {
-               drop_links(nd);
-               nd->depth = 0;
-               nd->flags &= ~LOOKUP_RCU;
-               nd->path.mnt = NULL;
-               nd->path.dentry = NULL;
-               if (!(nd->flags & LOOKUP_ROOT))
-                       nd->root.mnt = NULL;
-               rcu_read_unlock();
-       } else if (likely(unlazy_walk(nd, NULL, 0)) == 0) {
-               return 0;
-       }
-       path_put(link);
-       return -ECHILD;
-}
-
 static inline int d_revalidate(struct dentry *dentry, unsigned int flags)
 {
        return dentry->d_op->d_revalidate(dentry, flags);
@@ -1706,9 +1688,17 @@ static int pick_link(struct nameidata *nd, struct path *link,
        error = nd_alloc_stack(nd);
        if (unlikely(error)) {
                if (error == -ECHILD) {
-                       if (unlikely(unlazy_link(nd, link, seq)))
-                               return -ECHILD;
-                       error = nd_alloc_stack(nd);
+                       if (unlikely(!legitimize_path(nd, link, seq))) {
+                               drop_links(nd);
+                               nd->depth = 0;
+                               nd->flags &= ~LOOKUP_RCU;
+                               nd->path.mnt = NULL;
+                               nd->path.dentry = NULL;
+                               if (!(nd->flags & LOOKUP_ROOT))
+                                       nd->root.mnt = NULL;
+                               rcu_read_unlock();
+                       } else if (likely(unlazy_walk(nd, NULL, 0)) == 0)
+                               error = nd_alloc_stack(nd);
                }
                if (error) {
                        path_put(link);