fix bogus path_put() of nd->root after some unlazy_walk() failures
Failure to grab reference to parent dentry should go through the same cleanup as nd->seq mismatch. As it is, we might end up with caller thinking it needs to path_put() nd->root, with obvious nasty results once we'd hit that bug enough times to drive the refcount of root dentry all the way to zero... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
2e7babfa89
commit
d870b4a191
|
@ -513,8 +513,7 @@ static int unlazy_walk(struct nameidata *nd, struct dentry *dentry)
|
|||
|
||||
if (!lockref_get_not_dead(&parent->d_lockref)) {
|
||||
nd->path.dentry = NULL;
|
||||
rcu_read_unlock();
|
||||
return -ECHILD;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue