[same story as with the previous two patches] Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> --- diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c index 8bede0742619..cdd8f8816d2a 100644 --- a/fs/overlayfs/copy_up.c +++ b/fs/overlayfs/copy_up.c @@ -373,6 +373,22 @@ static int ovl_create_index(struct dentry *dentry, struct dentry *origin, if (err) goto out; + if (unlikely(d_unhashed(temp))) { + struct dentry *d = lookup_one_len(temp->d_name.name, + temp->d_parent, + temp->d_name.len); + if (IS_ERR(d)) { + err = PTR_ERR(d); + goto out; + } + dput(temp); + temp = d; + if (d_is_negative(temp)) { + err = -EIO; + goto out; + } + } + err = ovl_set_upper_fh(upper, temp); if (err) goto out_cleanup;