The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=24d3cbaaf5ad45b53e15d4729961fc8a8b385562
commit 24d3cbaaf5ad45b53e15d4729961fc8a8b385562 Author: Konstantin Belousov <[email protected]> AuthorDate: 2026-09-03 17:56:13 +0000 Commit: Konstantin Belousov <[email protected]> CommitDate: 2026-09-07 16:03:51 +0000 kern_fork.c: add kern.pdfork_implicit_nowaitpid sysctl Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D59349 --- sys/kern/kern_fork.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index 843cf5a7ba3f..a456f0ac1490 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -91,6 +91,11 @@ dtrace_fork_func_t dtrace_fasttrap_fork; SDT_PROVIDER_DECLARE(proc); SDT_PROBE_DEFINE3(proc, , , create, "struct proc *", "struct proc *", "int"); +static bool pdfork_implicit_nowaitpid; +SYSCTL_BOOL(_kern, OID_AUTO, pdfork_implicit_nowaitpid, CTLFLAG_RWTUN, + &pdfork_implicit_nowaitpid, 0, + "PD_NOWAITPID is assumed to be always set"); + #ifndef _SYS_SYSPROTO_H_ struct fork_args { int dummy; @@ -560,7 +565,8 @@ do_fork(struct thread *td, struct fork_req *fr, struct proc *p2, struct thread * P2_LOGSIGEXIT_ENABLE); if ((fr->fr_flags & RFPROCDESC) != 0) { p2->p_zombieref = PZOMBIEREF_PROCDESC; - if ((fr->fr_pd_flags & PD_NOWAITPID) == 0 && + if (((fr->fr_pd_flags & PD_NOWAITPID) == 0 && + !pdfork_implicit_nowaitpid) && (fr->fr_flags & RFNOWAIT) == 0) p2->p_zombieref |= (PZOMBIEREF_PARENT | PZOMBIEREF_NEEDPARENT);
