]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
proc update - don't assume we are pid 1
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Sun, 17 May 2015 20:14:13 +0000 (20:14 +0000)
committerStéphane Graber <stgraber@ubuntu.com>
Wed, 1 Jul 2015 17:26:26 +0000 (13:26 -0400)
(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@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/utils.c

index ac00af3b5996a361d4436b8964e93cc7420bd337..467bc1b42af96a6df3ea862f321701b2c5bde2a2 100644 (file)
@@ -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;