link_path_walk: don't bother with walk_component() after jumping link

... it does nothing if nd->last_type is LAST_BIND.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2015-04-18 19:19:01 -04:00
parent b0c24c3bdf
commit 12b0957800

View File

@ -1797,7 +1797,11 @@ static int link_path_walk(const char *name, struct nameidata *nd)
return err;
}
err = 0;
if (likely(s)) {
if (unlikely(!s)) {
/* jumped */
put_link(nd, &link, cookie);
break;
} else {
if (*s == '/') {
if (!nd->root.mnt)
set_root(nd);
@ -1812,9 +1816,9 @@ static int link_path_walk(const char *name, struct nameidata *nd)
put_link(nd, &link, cookie);
break;
}
err = walk_component(nd, LOOKUP_FOLLOW);
put_link(nd, &link, cookie);
}
err = walk_component(nd, LOOKUP_FOLLOW);
put_link(nd, &link, cookie);
} while (err > 0);
current->link_count--;