diff --git a/fs/namei.c b/fs/namei.c index 56e4f4d537d0589912bea3ee629390e894842336..5e6aaadc1dcd994df52a7fcfdc322d0f508cba6f 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -574,9 +574,12 @@ static int unlazy_walk(struct nameidata *nd, struct dentry *dentry) drop_dentry: unlock_rcu_walk(); dput(dentry); - return -ECHILD; + goto drop_root_mnt; out: unlock_rcu_walk(); +drop_root_mnt: + if (!(nd->flags & LOOKUP_ROOT)) + nd->root.mnt = NULL; return -ECHILD; }