diff --git a/fs/dcache.c b/fs/dcache.c
index 64c8ce4..1834e71 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -2460,8 +2460,9 @@
 		struct dentry * parent;
 
 		if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) {
+			struct mount *mnt = real_mount(vfsmnt);
 			/* Global root? */
-			if (!mnt_has_parent(vfsmnt))
+			if (!mnt_has_parent(mnt))
 				goto global_root;
 			dentry = vfsmnt->mnt_mountpoint;
 			vfsmnt = vfsmnt->mnt_parent;
diff --git a/fs/mount.h b/fs/mount.h
index 831e7c8..541daf5 100644
--- a/fs/mount.h
+++ b/fs/mount.h
@@ -10,9 +10,9 @@
 	return container_of(mnt, struct mount, mnt);
 }
 
-static inline int mnt_has_parent(struct vfsmount *mnt)
+static inline int mnt_has_parent(struct mount *mnt)
 {
-	return mnt != mnt->mnt_parent;
+	return &mnt->mnt != mnt->mnt.mnt_parent;
 }
 
 extern struct mount *__lookup_mnt(struct vfsmount *, struct dentry *, int);
diff --git a/fs/namespace.c b/fs/namespace.c
index 17927f9..ced3aa5 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1195,7 +1195,7 @@
 	while (!list_empty(head)) {
 		mnt = list_first_entry(head, struct mount, mnt_hash);
 		list_del_init(&mnt->mnt_hash);
-		if (mnt_has_parent(&mnt->mnt)) {
+		if (mnt_has_parent(mnt)) {
 			struct dentry *dentry;
 			struct vfsmount *m;
 
@@ -1235,7 +1235,7 @@
 		p->mnt.mnt_ns = NULL;
 		__mnt_make_shortterm(&p->mnt);
 		list_del_init(&p->mnt.mnt_child);
-		if (mnt_has_parent(&p->mnt)) {
+		if (mnt_has_parent(p)) {
 			p->mnt.mnt_parent->mnt_ghosts++;
 			dentry_reset_mounted(p->mnt.mnt_mountpoint);
 		}
@@ -1861,7 +1861,7 @@
 static int do_move_mount(struct path *path, char *old_name)
 {
 	struct path old_path, parent_path;
-	struct vfsmount *p;
+	struct mount *p;
 	struct mount *old;
 	int err = 0;
 	if (!capable(CAP_SYS_ADMIN))
@@ -1889,7 +1889,7 @@
 
 	old = real_mount(old_path.mnt);
 
-	if (!mnt_has_parent(old_path.mnt))
+	if (!mnt_has_parent(old))
 		goto out1;
 
 	if (S_ISDIR(path->dentry->d_inode->i_mode) !=
@@ -1908,8 +1908,8 @@
 	    tree_contains_unbindable(old))
 		goto out1;
 	err = -ELOOP;
-	for (p = path->mnt; mnt_has_parent(p); p = p->mnt_parent)
-		if (p == old_path.mnt)
+	for (p = real_mount(path->mnt); mnt_has_parent(p); p = real_mount(p->mnt.mnt_parent))
+		if (p == old)
 			goto out1;
 
 	err = attach_recursive_mnt(old, path, &parent_path);
@@ -2562,7 +2562,7 @@
 bool is_path_reachable(struct vfsmount *mnt, struct dentry *dentry,
 			 const struct path *root)
 {
-	while (mnt != root->mnt && mnt_has_parent(mnt)) {
+	while (mnt != root->mnt && mnt_has_parent(real_mount(mnt))) {
 		dentry = mnt->mnt_mountpoint;
 		mnt = mnt->mnt_parent;
 	}
@@ -2652,11 +2652,11 @@
 	error = -EINVAL;
 	if (root.mnt->mnt_root != root.dentry)
 		goto out4; /* not a mountpoint */
-	if (!mnt_has_parent(root.mnt))
+	if (!mnt_has_parent(root_mnt))
 		goto out4; /* not attached */
 	if (new.mnt->mnt_root != new.dentry)
 		goto out4; /* not a mountpoint */
-	if (!mnt_has_parent(new.mnt))
+	if (!mnt_has_parent(new_mnt))
 		goto out4; /* not attached */
 	/* make sure we can reach put_old from new_root */
 	if (!is_path_reachable(old.mnt, old.dentry, &new))
