]> xenbits.xensource.com Git - libvirt.git/commitdiff
Don't leak memory if a cgroup is mounted multiple times
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 31 Aug 2011 15:46:13 +0000 (16:46 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 31 Aug 2011 16:51:09 +0000 (17:51 +0100)
It is possible (expected/likely in Fedora 15) for a cgroup controller
to be mounted in multiple locations at the same time, due to bind
mounts. Currently we leak memory if this happens, because we overwrite
the previous 'mountPoint' string. Instead just accept the first match
we find.

* src/util/cgroup.c: Only accept first match for a cgroup
  controller mount

src/util/cgroup.c

index f3ec80f99b46531279dfafaeb4abe254827294c7..c8d1f339cbbcf7c77ce6c301fbbe6122ec2d651d 100644 (file)
@@ -131,7 +131,12 @@ static int virCgroupDetectMounts(virCgroupPtr group)
                 } else {
                     len = strlen(tmp);
                 }
+                /* NB, the same controller can appear >1 time in mount list
+                 * due to bind mounts from one location to another. Pick the
+                 * first entry only
+                 */
                 if (typelen == len && STREQLEN(typestr, tmp, len) &&
+                    !group->controllers[i].mountPoint &&
                     !(group->controllers[i].mountPoint = strdup(entry.mnt_dir)))
                     goto no_memory;
                 tmp = next;