svn commit: r324734 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Thu Oct 19 00:38:15 UTC 2017
Author: mjg
Date: Thu Oct 19 00:38:14 2017
New Revision: 324734
URL: https://svnweb.freebsd.org/changeset/base/324734
Log:
Tidy up pmc support at execve.
The proc-specific check is inherently racy, so the code can just unlock
beforehand.
MFC after: 1 week
Modified:
head/sys/kern/kern_exec.c
Modified: head/sys/kern/kern_exec.c
==============================================================================
--- head/sys/kern/kern_exec.c Thu Oct 19 00:31:00 2017 (r324733)
+++ head/sys/kern/kern_exec.c Thu Oct 19 00:38:14 2017 (r324734)
@@ -849,28 +849,23 @@ interpret:
p->p_args = newargs;
newargs = NULL;
+ PROC_UNLOCK(p);
+
#ifdef HWPMC_HOOKS
/*
* Check if system-wide sampling is in effect or if the
* current process is using PMCs. If so, do exec() time
* processing. This processing needs to happen AFTER the
* P_INEXEC flag is cleared.
- *
- * The proc lock needs to be released before taking the PMC
- * SX.
*/
if (PMC_SYSTEM_SAMPLING_ACTIVE() || PMC_PROC_IS_USING_PMCS(p)) {
- PROC_UNLOCK(p);
VOP_UNLOCK(imgp->vp, 0);
pe.pm_credentialschanged = credential_changing;
pe.pm_entryaddr = imgp->entry_addr;
PMC_CALL_HOOK_X(td, PMC_FN_PROCESS_EXEC, (void *) &pe);
vn_lock(imgp->vp, LK_SHARED | LK_RETRY);
- } else
- PROC_UNLOCK(p);
-#else /* !HWPMC_HOOKS */
- PROC_UNLOCK(p);
+ }
#endif
/* Set values passed into the program in registers. */
More information about the svn-src-all
mailing list