diff options
author | jkoshy <jkoshy@FreeBSD.org> | 2006-03-09 02:08:12 +0000 |
---|---|---|
committer | jkoshy <jkoshy@FreeBSD.org> | 2006-03-09 02:08:12 +0000 |
commit | cc4ea0b46dbb746e0c3a8da09b9480b850a0c421 (patch) | |
tree | 8a18f5c4a09e0dae2ac014dacad343d439fdf231 /sys/dev/hwpmc/hwpmc_mod.c | |
parent | 5b9c942eb7a5a8866922074a6ace5089b3b53c9d (diff) | |
download | FreeBSD-src-cc4ea0b46dbb746e0c3a8da09b9480b850a0c421.zip FreeBSD-src-cc4ea0b46dbb746e0c3a8da09b9480b850a0c421.tar.gz |
When a process is de-configuring a log file, also stop all of its
PMCs that require a log file to operate. This change should fix
PR 90269.
PR: kern/90269
MFC after: 1 week
Diffstat (limited to 'sys/dev/hwpmc/hwpmc_mod.c')
-rw-r--r-- | sys/dev/hwpmc/hwpmc_mod.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/hwpmc/hwpmc_mod.c b/sys/dev/hwpmc/hwpmc_mod.c index 2a8b0fb..9c7b3b2 100644 --- a/sys/dev/hwpmc/hwpmc_mod.c +++ b/sys/dev/hwpmc/hwpmc_mod.c @@ -2408,6 +2408,7 @@ pmc_syscall_handler(struct thread *td, void *syscall_args) case PMC_OP_CONFIGURELOG: { + struct pmc *pm; struct pmc_owner *po; struct pmc_op_configurelog cl; struct proc *p; @@ -2436,8 +2437,12 @@ pmc_syscall_handler(struct thread *td, void *syscall_args) else if (po->po_flags & PMC_PO_OWNS_LOGFILE) { pmclog_process_closelog(po); error = pmclog_flush(po); - if (error == 0) + if (error == 0) { + LIST_FOREACH(pm, &po->po_pmcs, pm_next) + if (pm->pm_flags & PMC_F_NEEDS_LOGFILE) + pmc_stop(pm); error = pmclog_deconfigure_log(po); + } } else error = EINVAL; } |