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
This commit is contained in:
Davide Italiano 2013-04-30 08:33:38 +00:00
parent 9dc0d11127
commit e1bd42c272

View File

@ -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;
}