link_path_walk: cleanup - turn goto start; into continue;
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 19 Apr 2015 00:44:34 +0000 (20:44 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 11 May 2015 02:19:59 +0000 (22:19 -0400)
Deal with skipping leading slashes before what used to be the
recursive call.  That way we can get rid of that goto completely.

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

index 5b0edd3313388016896b1a289886f85802c0763b..c105107ddf8f004615f153cd4ec8179d018e7aaf 100644 (file)
@@ -1718,11 +1718,10 @@ static int link_path_walk(const char *name, struct nameidata *nd)
        } stack[MAX_NESTED_LINKS], *last = stack + nd->depth - 1;
        int err;
 
-start:
        while (*name=='/')
                name++;
        if (!*name)
-               goto OK;
+               return 0;
 
        /* At this point we know we have a real path component. */
        for(;;) {
@@ -1821,11 +1820,15 @@ Walked:
                                        nd->path = nd->root;
                                        path_get(&nd->root);
                                        nd->flags |= LOOKUP_JUMPED;
+                                       while (unlikely(*++s == '/'))
+                                               ;
                                }
                                nd->inode = nd->path.dentry->d_inode;
                                last->name = name;
+                               if (!*s)
+                                       goto OK;
                                name = s;
-                               goto start;
+                               continue;
                        }
                }
                if (!d_can_lookup(nd->path.dentry)) {