Loading fs/namei.c +32 −29 Original line number Diff line number Diff line Loading @@ -1775,6 +1775,10 @@ static int link_path_walk(const char *name, struct nameidata *nd) return err; if (err) { struct path link; void *cookie; const char *s; if (unlikely(current->link_count >= MAX_NESTED_LINKS)) { path_put_conditional(&nd->link, nd); path_put(&nd->path); Loading @@ -1785,10 +1789,9 @@ static int link_path_walk(const char *name, struct nameidata *nd) nd->depth++; current->link_count++; do { struct path link = nd->link; void *cookie; const char *s = get_link(&link, nd, &cookie); loop: /* will be gone very soon */ link = nd->link; s = get_link(&link, nd, &cookie); if (unlikely(IS_ERR(s))) { err = PTR_ERR(s); Loading @@ -1800,7 +1803,6 @@ static int link_path_walk(const char *name, struct nameidata *nd) if (unlikely(!s)) { /* jumped */ put_link(nd, &link, cookie); break; } else { if (*s == '/') { if (!nd->root.mnt) Loading @@ -1814,12 +1816,13 @@ 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); break; } } else { err = walk_component(nd, LOOKUP_FOLLOW); put_link(nd, &link, cookie); if (err > 0) goto loop; } } } while (err > 0); current->link_count--; nd->depth--; Loading Loading
fs/namei.c +32 −29 Original line number Diff line number Diff line Loading @@ -1775,6 +1775,10 @@ static int link_path_walk(const char *name, struct nameidata *nd) return err; if (err) { struct path link; void *cookie; const char *s; if (unlikely(current->link_count >= MAX_NESTED_LINKS)) { path_put_conditional(&nd->link, nd); path_put(&nd->path); Loading @@ -1785,10 +1789,9 @@ static int link_path_walk(const char *name, struct nameidata *nd) nd->depth++; current->link_count++; do { struct path link = nd->link; void *cookie; const char *s = get_link(&link, nd, &cookie); loop: /* will be gone very soon */ link = nd->link; s = get_link(&link, nd, &cookie); if (unlikely(IS_ERR(s))) { err = PTR_ERR(s); Loading @@ -1800,7 +1803,6 @@ static int link_path_walk(const char *name, struct nameidata *nd) if (unlikely(!s)) { /* jumped */ put_link(nd, &link, cookie); break; } else { if (*s == '/') { if (!nd->root.mnt) Loading @@ -1814,12 +1816,13 @@ 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); break; } } else { err = walk_component(nd, LOOKUP_FOLLOW); put_link(nd, &link, cookie); if (err > 0) goto loop; } } } while (err > 0); current->link_count--; nd->depth--; Loading