Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Apr 2013 08:33:38 +0000 (UTC)
From:      Davide Italiano <davide@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r250097 - head/sys/dev/hwpmc
Message-ID:  <201304300833.r3U8XcHB036501@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304300833.r3U8XcHB036501>