diff --git a/fs/dcache.c b/fs/dcache.c
index 2bb3f7ac683b31e55cc783db67a91ad8e480c63a..d9ca1e5ceb92f02302fdeedb7bc1e2b6e5768f2e 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1479,6 +1479,8 @@ static void switch_names(struct dentry *dentry, struct dentry *target)
 			 * dentry:internal, target:external.  Steal target's
 			 * storage and make target internal.
 			 */
+			memcpy(target->d_iname, dentry->d_name.name,
+					dentry->d_name.len + 1);
 			dentry->d_name.name = target->d_name.name;
 			target->d_name.name = target->d_iname;
 		}