From e599717bc50303fb2e45cc82bc8e0857cd6d61aa Mon Sep 17 00:00:00 2001 From: Fengtu Wang Date: Tue, 3 Apr 2018 05:00:19 +0800 Subject: [PATCH] conf: ensure umounts don't propagate to host Signed-off-by: Fengtu Wang Signed-off-by: Christian Brauner --- src/lxc/conf.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lxc/conf.c b/src/lxc/conf.c index fe30800d77..7455843086 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -1112,7 +1112,7 @@ static int setup_rootfs_pivot_root(const char *rootfs) goto on_error; } - /* At this point the old-root is mounted on top of our new-root To + /* At this point the old-root is mounted on top of our new-root. To * unmounted it we must not be chdir'd into it, so escape back to * old-root. */ @@ -1122,6 +1122,15 @@ static int setup_rootfs_pivot_root(const char *rootfs) goto on_error; } + /* Make oldroot rslave to make sure our umounts don't propagate to the + * host. + */ + ret = mount("", ".", "", MS_SLAVE | MS_REC, NULL); + if (ret < 0) { + SYSERROR("Failed to make oldroot rslave"); + goto on_error; + } + ret = umount2(".", MNT_DETACH); if (ret < 0) { SYSERROR("Failed to detach old root directory");