[lxc-devel] [PATCH 2/1] proc update - don't assume we are pid 1

Serge Hallyn serge.hallyn at ubuntu.com
Sun May 17 20:14:13 UTC 2015


(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 <serge.hallyn at ubuntu.com>
---
 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 0588fdd..e56f4a3 100644
--- a/src/lxc/utils.c
+++ b/src/lxc/utils.c
@@ -1679,6 +1679,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) {
@@ -1687,12 +1688,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;
-- 
2.1.4



More information about the lxc-devel mailing list