[CRIU] [PATCH] mount: don't do MS_REC|MS_PRIVATE for host mounts
    Andrey Vagin 
    avagin at openvz.org
       
    Tue Jun 21 23:59:16 PDT 2016
    
    
  
From: Andrew Vagin <avagin at virtuozzo.com>
Here is a race when someone umounted something and this operation
isn't propagated into our namespace.
CRIU					| Another process
-----------------------------------------------------------------
pivot_root(".", put_root)		|
mount(put_root, MS_REC|MS_PRIVATE)	|
					| umount /xxx/yyy
					| umount /xxx -> EBUSY
umount(put_root)
We do this to not affect mounts in put_root, but we can mask
these mounts as slave and this will work for us and for external
users.
Signed-off-by: Andrew Vagin <avagin at virtuozzo.com>
---
 criu/mount.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/criu/mount.c b/criu/mount.c
index e891c92..e3b837f 100644
--- a/criu/mount.c
+++ b/criu/mount.c
@@ -2733,7 +2733,7 @@ static int cr_pivot_root(char *root)
 		goto err_tmpfs;
 	}
 
-	if (mount("none", put_root, "none", MS_REC|MS_PRIVATE, NULL)) {
+	if (mount("none", put_root, "none", MS_REC|MS_SLAVE, NULL)) {
 		pr_perror("Can't remount root with MS_PRIVATE");
 		return -1;
 	}
-- 
2.7.4
    
    
More information about the CRIU
mailing list