diff options
author | mjg <mjg@FreeBSD.org> | 2016-12-31 12:49:20 +0000 |
---|---|---|
committer | mjg <mjg@FreeBSD.org> | 2016-12-31 12:49:20 +0000 |
commit | e372699677c4a92077e82b46c28e146d4bfeb087 (patch) | |
tree | 18c6fb12004ea7005619480b393c942feab0c120 | |
parent | 3f249b39b642cf9a80c7bb94b19649762799121c (diff) | |
download | FreeBSD-src-e372699677c4a92077e82b46c28e146d4bfeb087.zip FreeBSD-src-e372699677c4a92077e82b46c28e146d4bfeb087.tar.gz |
MFC r303921:
ktrace: do a lockless check on fork to see if tracing is enabled
This saves 2 lock acquisitions in the common case.
-rw-r--r-- | sys/kern/kern_ktrace.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index 0e30fc9..676cd43 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -572,9 +572,14 @@ void ktrprocfork(struct proc *p1, struct proc *p2) { + MPASS(p2->p_tracevp == NULL); + MPASS(p2->p_traceflag == 0); + + if (p1->p_traceflag == 0) + return; + PROC_LOCK(p1); mtx_lock(&ktrace_mtx); - KASSERT(p2->p_tracevp == NULL, ("new process has a ktrace vnode")); if (p1->p_traceflag & KTRFAC_INHERIT) { p2->p_traceflag = p1->p_traceflag; if ((p2->p_tracevp = p1->p_tracevp) != NULL) { |