The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=261c97b47ea4f120bfa4a04aab7d35c70dde8c8f
commit 261c97b47ea4f120bfa4a04aab7d35c70dde8c8f Author: Konstantin Belousov <[email protected]> AuthorDate: 2026-06-06 17:08:17 +0000 Commit: Konstantin Belousov <[email protected]> CommitDate: 2026-06-06 20:00:30 +0000 kern_procctl: add get_reaper_or_p() helper Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D57487 --- sys/kern/kern_procctl.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_procctl.c b/sys/kern/kern_procctl.c index 57ca5665d453..db9de394c101 100644 --- a/sys/kern/kern_procctl.c +++ b/sys/kern/kern_procctl.c @@ -132,6 +132,13 @@ protect_set(struct thread *td, struct proc *p, void *data) return (0); } +static struct proc * +get_reaper_or_p(struct proc *p) +{ + sx_assert(&proctree_lock, SX_LOCKED); + return ((p->p_treeflag & P_TREE_REAPER) == 0 ? p->p_reaper : p); +} + static int reap_acquire(struct thread *td, struct proc *p, void *data __unused) { @@ -172,12 +179,9 @@ reap_status(struct thread *td, struct proc *p, void *data) rs = data; sx_assert(&proctree_lock, SX_LOCKED); - if ((p->p_treeflag & P_TREE_REAPER) == 0) { - reap = p->p_reaper; - } else { - reap = p; + reap = get_reaper_or_p(p); + if (reap == p) rs->rs_flags |= REAPER_STATUS_OWNED; - } if (reap == initproc) rs->rs_flags |= REAPER_STATUS_REALINIT; rs->rs_reaper = reap->p_pid; @@ -536,7 +540,7 @@ reap_kill(struct thread *td, struct proc *p, void *data) (REAPER_KILL_CHILDREN | REAPER_KILL_SUBTREE)) return (EINVAL); PROC_UNLOCK(p); - reaper = (p->p_treeflag & P_TREE_REAPER) == 0 ? p->p_reaper : p; + reaper = get_reaper_or_p(p); ksiginfo_init(&ksi); ksi.ksi_signo = rk->rk_sig; ksi.ksi_code = SI_USER;
