The branch main has been updated by mjg:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=80cf427b8dc18bc5c26fed6d07bc5c5eda4545b0

commit 80cf427b8dc18bc5c26fed6d07bc5c5eda4545b0
Author:     Mateusz Guzik <m...@freebsd.org>
AuthorDate: 2023-03-29 08:45:46 +0000
Commit:     Mateusz Guzik <m...@freebsd.org>
CommitDate: 2023-03-29 09:19:03 +0000

    proc: shave a lock trip on exit if possible
    
    ... which happens to be vast majority of the time
---
 sys/kern/kern_exit.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 3f64343aea0e..a92d5cc0f642 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -477,9 +477,11 @@ exit1(struct thread *td, int rval, int signo)
        sx_xunlock(&allproc_lock);
 
        sx_xlock(&proctree_lock);
-       PROC_LOCK(p);
-       p->p_flag &= ~(P_TRACED | P_PPWAIT | P_PPTRACE);
-       PROC_UNLOCK(p);
+       if ((p->p_flag & (P_TRACED | P_PPWAIT | P_PPTRACE)) != 0) {
+               PROC_LOCK(p);
+               p->p_flag &= ~(P_TRACED | P_PPWAIT | P_PPTRACE);
+               PROC_UNLOCK(p);
+       }
 
        /*
         * killjobc() might drop and re-acquire proctree_lock to

Reply via email to