Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d870b4a1 authored by Al Viro's avatar Al Viro
Browse files

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: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2e7babfa
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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;
	}

	/*