Loading fs/namei.c +13 −6 Original line number Diff line number Diff line Loading @@ -1803,6 +1803,8 @@ static int link_path_walk(const char *name, struct nameidata *nd) if (unlikely(!s)) { /* jumped */ put_link(nd, &link, cookie); current->link_count--; nd->depth--; } else { if (*s == '/') { if (!nd->root.mnt) Loading @@ -1816,18 +1818,23 @@ static int link_path_walk(const char *name, struct nameidata *nd) err = link_path_walk(s, nd); if (unlikely(err)) { put_link(nd, &link, cookie); current->link_count--; nd->depth--; return err; } else { err = walk_component(nd, LOOKUP_FOLLOW); put_link(nd, &link, cookie); if (err > 0) goto loop; } } current->link_count--; nd->depth--; if (err) if (err < 0) return err; if (err > 0) { current->link_count++; nd->depth++; goto loop; } } } } if (!d_can_lookup(nd->path.dentry)) { err = -ENOTDIR; Loading Loading
fs/namei.c +13 −6 Original line number Diff line number Diff line Loading @@ -1803,6 +1803,8 @@ static int link_path_walk(const char *name, struct nameidata *nd) if (unlikely(!s)) { /* jumped */ put_link(nd, &link, cookie); current->link_count--; nd->depth--; } else { if (*s == '/') { if (!nd->root.mnt) Loading @@ -1816,18 +1818,23 @@ static int link_path_walk(const char *name, struct nameidata *nd) err = link_path_walk(s, nd); if (unlikely(err)) { put_link(nd, &link, cookie); current->link_count--; nd->depth--; return err; } else { err = walk_component(nd, LOOKUP_FOLLOW); put_link(nd, &link, cookie); if (err > 0) goto loop; } } current->link_count--; nd->depth--; if (err) if (err < 0) return err; if (err > 0) { current->link_count++; nd->depth++; goto loop; } } } } if (!d_can_lookup(nd->path.dentry)) { err = -ENOTDIR; Loading