svn commit: r250097 - head/sys/dev/hwpmc
Davide Italiano
davide at FreeBSD.org
Tue Apr 30 08:33:38 UTC 2013
Author: davide
Date: Tue Apr 30 08:33:38 2013
New Revision: 250097
URL: http://svnweb.freebsd.org/changeset/base/250097
Log:
When hwpmc(4) module is unloaded it reports a double leakage. This happens
at least if FreeBSD is ran under VirtualBox. In order to avoid the leakage,
properly deallocate structures in case CPU claims that hw performance
monitoring counters are not supported.
Reported by: hiren
Modified:
head/sys/dev/hwpmc/hwpmc_intel.c
Modified: head/sys/dev/hwpmc/hwpmc_intel.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_intel.c Tue Apr 30 08:18:08 2013 (r250096)
+++ head/sys/dev/hwpmc/hwpmc_intel.c Tue Apr 30 08:33:38 2013 (r250097)
@@ -87,7 +87,7 @@ pmc_intel_initialize(void)
cputype = -1;
nclasses = 2;
-
+ error = 0;
model = ((cpu_id & 0xF0000) >> 12) | ((cpu_id & 0xF0) >> 4);
switch (cpu_id & 0xF00) {
@@ -192,10 +192,6 @@ pmc_intel_initialize(void)
ncpus = pmc_cpu_max();
- error = pmc_tsc_initialize(pmc_mdep, ncpus);
- if (error)
- goto error;
-
switch (cputype) {
#if defined(__i386__) || defined(__amd64__)
/*
@@ -271,10 +267,10 @@ pmc_intel_initialize(void)
break;
}
#endif
-
+ error = pmc_tsc_initialize(pmc_mdep, ncpus);
error:
if (error) {
- free(pmc_mdep, M_PMC);
+ pmc_mdep_free(pmc_mdep);
pmc_mdep = NULL;
}
More information about the svn-src-all
mailing list