mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-16 01:54:00 +00:00
fix follow_link() breakage
commit 574197e0de46a8a4db5c54ef7b65e43ffa8873a7 had a missing piece, breaking the loop detection ;-/ Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
d10902812c
commit
0e794589e5
@ -753,9 +753,11 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
|
||||
|
||||
BUG_ON(nd->flags & LOOKUP_RCU);
|
||||
|
||||
if (link->mnt == nd->path.mnt)
|
||||
mntget(link->mnt);
|
||||
|
||||
if (unlikely(current->total_link_count >= 40)) {
|
||||
*p = ERR_PTR(-ELOOP); /* no ->put_link(), please */
|
||||
path_put_conditional(link, nd);
|
||||
path_put(&nd->path);
|
||||
return -ELOOP;
|
||||
}
|
||||
@ -765,9 +767,6 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
|
||||
touch_atime(link->mnt, dentry);
|
||||
nd_set_link(nd, NULL);
|
||||
|
||||
if (link->mnt == nd->path.mnt)
|
||||
mntget(link->mnt);
|
||||
|
||||
error = security_inode_follow_link(link->dentry, nd);
|
||||
if (error) {
|
||||
*p = ERR_PTR(error); /* no ->put_link(), please */
|
||||
|
Loading…
x
Reference in New Issue
Block a user