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;
        }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to