summaryrefslogtreecommitdiffstats
path: root/sys/dev/hwpmc
diff options
context:
space:
mode:
authorrstone <rstone@FreeBSD.org>2010-05-01 22:04:58 +0000
committerrstone <rstone@FreeBSD.org>2010-05-01 22:04:58 +0000
commit5baa2ffd766629886fc7d864f4c82fad76ab87e3 (patch)
tree17c273a8d071f64ec0130c429ffdd407b163480d /sys/dev/hwpmc
parentb1c9a3a8211c0dc64b4ed5f2b5da177736dff1ae (diff)
downloadFreeBSD-src-5baa2ffd766629886fc7d864f4c82fad76ab87e3.zip
FreeBSD-src-5baa2ffd766629886fc7d864f4c82fad76ab87e3.tar.gz
When configuring a system-wide couting PMC, hwpmc was incorrectly logging process mappings for that PMC. Nothing ever reads pmc logs out of a counting PMC, so the log buffers were leaked when the PMC was deconfigured. The process mappings are only useful for sampling PMCs anyway, so only log the mappings if the PMC is a sampling PMC.
This bug would cause allocating sample-mode PMCs to fail with ENOMEM after allocating several counting-mode PMCs. Approved by: jkoshy (mentor) MFC after: 2 weeks
Diffstat (limited to 'sys/dev/hwpmc')
-rw-r--r--sys/dev/hwpmc/hwpmc_mod.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/dev/hwpmc/hwpmc_mod.c b/sys/dev/hwpmc/hwpmc_mod.c
index e33b431..a19c85e 100644
--- a/sys/dev/hwpmc/hwpmc_mod.c
+++ b/sys/dev/hwpmc/hwpmc_mod.c
@@ -2675,16 +2675,16 @@ pmc_start(struct pmc *pm)
PMCDBG(PMC,OPS,1, "po=%p in global list", po);
}
po->po_sscount++;
- }
- /*
- * Log mapping information for all existing processes in the
- * system. Subsequent mappings are logged as they happen;
- * see pmc_process_mmap().
- */
- if (po->po_logprocmaps == 0) {
- pmc_log_all_process_mappings(po);
- po->po_logprocmaps = 1;
+ /*
+ * Log mapping information for all existing processes in the
+ * system. Subsequent mappings are logged as they happen;
+ * see pmc_process_mmap().
+ */
+ if (po->po_logprocmaps == 0) {
+ pmc_log_all_process_mappings(po);
+ po->po_logprocmaps = 1;
+ }
}
/*
OpenPOWER on IntegriCloud