diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c
index c5449efd96d5e67e4024b50b569925f7e7acfa49..de3e6da1d5a51732f4e0ad3fbad3feb4b6664841 100644
--- a/fs/overlayfs/namei.c
+++ b/fs/overlayfs/namei.c
@@ -976,6 +976,8 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
 		upperdentry = dget(index);
 
 	if (upperdentry || ctr) {
+		if (ctr)
+			origin = stack[0].dentry;
 		inode = ovl_get_inode(dentry->d_sb, upperdentry, origin, index,
 				      ctr);
 		err = PTR_ERR(inode);