From: Daniel P. Berrange Date: Wed, 31 Aug 2011 15:46:13 +0000 (+0100) Subject: Don't leak memory if a cgroup is mounted multiple times X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=c32536e7da5a838a2a527f69003cabda7af7b94c;p=libvirt.git Don't leak memory if a cgroup is mounted multiple times 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 --- diff --git a/src/util/cgroup.c b/src/util/cgroup.c index f3ec80f99b..c8d1f339cb 100644 --- a/src/util/cgroup.c +++ b/src/util/cgroup.c @@ -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;