From: Al Viro <v...@zeniv.linux.org.uk>

Signed-off-by: Al Viro <v...@zeniv.linux.org.uk>
---
 fs/namei.c | 40 +++++++++++++++++-----------------------
 1 file changed, 17 insertions(+), 23 deletions(-)

diff --git a/fs/namei.c b/fs/namei.c
index 9844bb2..5b0edd3 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1826,23 +1826,6 @@ Walked:
                                last->name = name;
                                name = s;
                                goto start;
-
-back:
-                               name = last->name;
-                               if (unlikely(err)) {
-                                       put_link(nd, &last->link, last->cookie);
-                                       current->link_count--;
-                                       nd->depth--;
-                                       last--;
-                                       goto Err;
-                               } else {
-                                       err = walk_component(nd, LOOKUP_FOLLOW);
-                                       put_link(nd, &last->link, last->cookie);
-                                       current->link_count--;
-                                       nd->depth--;
-                                       last--;
-                                       goto Walked;
-                               }
                        }
                }
                if (!d_can_lookup(nd->path.dentry)) {
@@ -1852,13 +1835,24 @@ back:
        }
        terminate_walk(nd);
 Err:
-       if (likely(!nd->depth))
-               return err;
-       goto back;
+       while (unlikely(nd->depth)) {
+               put_link(nd, &last->link, last->cookie);
+               current->link_count--;
+               nd->depth--;
+               last--;
+       }
+       return err;
 OK:
-       if (likely(!nd->depth))
-               return 0;
-       goto back;
+       if (unlikely(nd->depth)) {
+               name = last->name;
+               err = walk_component(nd, LOOKUP_FOLLOW);
+               put_link(nd, &last->link, last->cookie);
+               current->link_count--;
+               nd->depth--;
+               last--;
+               goto Walked;
+       }
+       return 0;
 }
 
 static int path_init(int dfd, const struct filename *name, unsigned int flags,
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to