Author: mjg
Date: Mon Sep 2 12:46:43 2019
New Revision: 351697
URL: https://svnweb.freebsd.org/changeset/base/351697
Log:
proc: clear pid bitmap entry after dropping proctree lock
There is no correctness change here, but the procid lock is contended in
the fork path and taking it while holding proctree avoidably extends its
hold time.
Note that there are other ids which can end up getting cleared with the
lock.
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/kern/kern_exit.c
Modified: head/sys/kern/kern_exit.c
==============================================================================
--- head/sys/kern/kern_exit.c Mon Sep 2 11:04:17 2019 (r351696)
+++ head/sys/kern/kern_exit.c Mon Sep 2 12:46:43 2019 (r351697)
@@ -906,7 +906,6 @@ proc_reap(struct thread *td, struct proc *p, int *stat
LIST_REMOVE(p, p_sibling);
reaper_abandon_children(p, true);
reaper_clear(p);
- proc_id_clear(PROC_ID_PID, p->p_pid);
PROC_LOCK(p);
proc_clear_orphan(p);
PROC_UNLOCK(p);
@@ -914,6 +913,8 @@ proc_reap(struct thread *td, struct proc *p, int *stat
if (p->p_procdesc != NULL)
procdesc_reap(p);
sx_xunlock(&proctree_lock);
+
+ proc_id_clear(PROC_ID_PID, p->p_pid);
PROC_LOCK(p);
knlist_detach(p->p_klist);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"