diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 90bc4025ca3cbb6efb4e5b9d02981262d702acdd..1255891e56955c79d47da0a2d934a139cf18ed8d 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1518,7 +1518,7 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
 		d_drop(dentry);
 		switch (err) {
 		case -ENOENT:
-			d_add(dentry, NULL);
+			d_splice_alias(NULL, dentry);
 			nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
 			break;
 		case -EISDIR: