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

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

diff --git a/fs/namei.c b/fs/namei.c
index 27c3859..756e150 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1772,7 +1772,7 @@ static int link_path_walk(const char *name, struct 
nameidata *nd)
 
                err = may_lookup(nd);
                if (err)
-                       break;
+                       return err;
 
                hash_len = hash_name(name);
 
@@ -1794,7 +1794,7 @@ static int link_path_walk(const char *name, struct 
nameidata *nd)
                                struct qstr this = { { .hash_len = hash_len }, 
.name = name };
                                err = parent->d_op->d_hash(parent, &this);
                                if (err < 0)
-                                       break;
+                                       return err;
                                hash_len = this.hash_len;
                                name = this.name;
                        }
@@ -1829,15 +1829,13 @@ OK:
                        err = walk_component(nd, WALK_GET);
                }
                if (err < 0)
-                       break;
+                       return err;
 
                if (err) {
                        const char *s = get_link(nd);
 
-                       if (unlikely(IS_ERR(s))) {
-                               err = PTR_ERR(s);
-                               break;
-                       }
+                       if (unlikely(IS_ERR(s)))
+                               return PTR_ERR(s);
                        err = 0;
                        if (unlikely(!s)) {
                                /* jumped */
@@ -1848,12 +1846,9 @@ OK:
                                continue;
                        }
                }
-               if (!d_can_lookup(nd->path.dentry)) {
-                       err = -ENOTDIR;
-                       break;
-               }
+               if (unlikely(!d_can_lookup(nd->path.dentry)))
+                       return -ENOTDIR;
        }
-       return err;
 }
 
 static const char *path_init(int dfd, const struct filename *name,
-- 
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