git: 1575804961d2 - main - reap_kill_proc(): avoid singlethreading any other process if we are exiting
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 13 Jun 2022 19:33:43 UTC
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=1575804961d2ba1768c9a6b28438d364421718f3 commit 1575804961d2ba1768c9a6b28438d364421718f3 Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2022-05-16 23:47:20 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2022-06-13 19:30:03 +0000 reap_kill_proc(): avoid singlethreading any other process if we are exiting This is racy because curproc process lock is not used, but allows the process to exit faster. It is userspace issue to create such race anyway, and not fullfilling the guarantee that all reaper descendants are signalled should be fine. In collaboration with: pho Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D35310 --- sys/kern/kern_procctl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/kern/kern_procctl.c b/sys/kern/kern_procctl.c index b32a4156dafb..79725686bc44 100644 --- a/sys/kern/kern_procctl.c +++ b/sys/kern/kern_procctl.c @@ -291,6 +291,7 @@ reap_kill_proc_locked(struct thread *td, struct proc *p2, * race. */ need_stop = p2 != td->td_proc && + (td->td_proc->p_flag2 & P2_WEXIT) == 0 && (p2->p_flag & (P_KPROC | P_SYSTEM | P_STOPPED)) == 0 && (rk->rk_flags & REAPER_KILL_CHILDREN) == 0;