From fe4478860810c6db680181e67f65c3a15e97fc15 Mon Sep 17 00:00:00 2001 From: Serge Hallyn Date: Sun, 17 May 2015 20:14:13 +0000 Subject: [PATCH] proc update - don't assume we are pid 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (I erred in the first patch, causing every lxc-attach to unmount the container-'s /proc) Since we now use mount_proc_if_needed() from attach, as opposed to only from start, we cannot assume we are pid 1. So fix the check for whether to mount a new proc. Signed-off-by: Serge Hallyn Acked-by: Stéphane Graber --- src/lxc/utils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index ac00af3b5..467bc1b42 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -1417,6 +1417,7 @@ int mount_proc_if_needed(const char *rootfs) char path[MAXPATHLEN]; char link[20]; int linklen, ret; + int mypid; ret = snprintf(path, MAXPATHLEN, "%s/proc/self", rootfs); if (ret < 0 || ret >= MAXPATHLEN) { @@ -1425,12 +1426,12 @@ int mount_proc_if_needed(const char *rootfs) } memset(link, 0, 20); linklen = readlink(path, link, 20); - INFO("I am %d, /proc/self points to '%s'", getpid(), link); + mypid = (int)getpid(); + INFO("I am %d, /proc/self points to '%s'", mypid, link); ret = snprintf(path, MAXPATHLEN, "%s/proc", rootfs); if (linklen < 0) /* /proc not mounted */ goto domount; - /* can't be longer than rootfs/proc/1 */ - if (strncmp(link, "1", linklen) != 0) { + if (atoi(link) != mypid) { /* wrong /procs mounted */ umount2(path, MNT_DETACH); /* ignore failure */ goto domount;