From: Serge Hallyn Date: Sun, 17 May 2015 20:14:13 +0000 (+0000) Subject: proc update - don't assume we are pid 1 X-Git-Tag: lxc-2.0.0.beta1~267 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe4478860810c6db680181e67f65c3a15e97fc15;p=thirdparty%2Flxc.git proc update - don't assume we are pid 1 (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 --- 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;