[CRIU] [PATCH 1/2] mount: don't destruct an external mount-namespace (v2)

Andrey Vagin avagin at openvz.org
Fri Jul 5 01:19:54 EDT 2013


If a parent mount point is shared with exteranl mntns, a child will be
umounted from the external mntns too.

For example:
$ mount -t tmpfs xxx /root/tmp/
$ mount --make-shared tmp
$ mkdir tmp/xxx
$ mount -t tmpfs xxx /root/tmp/xxx
$ touch tmp/xxx/a

$ unshare -m umount tmp/xxx
$ ls -l tmp/xxx/a
ls: cannot access tmp/xxx/a: No such file or directory

This patch changes a parent mnt to private for umounting childrens.

v2: exit if a mount point can not be marked ad private

Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
 mount.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/mount.c b/mount.c
index 9e64e4f..c109505 100644
--- a/mount.c
+++ b/mount.c
@@ -634,6 +634,11 @@ static int do_umount_one(struct mount_info *mi)
 	if (!mi->parent)
 		return 0;

+	if (mount("none", mi->parent->mountpoint, "none", MS_REC|MS_PRIVATE, NULL)) {
+		pr_perror("Can't mark %s as private", mi->parent->mountpoint);
+		return -1;
+	}
+
 	if (umount(mi->mountpoint)) {
 		pr_perror("Can't umount at %s", mi->mountpoint);
 		return -1;
--
1.8.3.1



More information about the CRIU mailing list