git: f2307ecd36d6 - stable/15 - kern_fork.c: add kern.pdfork_implicit_nowaitpid sysctl

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Fri, 11 Sep 2026 01:10:26 UTC
The branch stable/15 has been updated by kib:

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

commit f2307ecd36d6b8c5261655d2dd49b330eadef458
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-09-03 17:56:13 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-09-11 01:10:04 +0000

    kern_fork.c: add kern.pdfork_implicit_nowaitpid sysctl
    
    (cherry picked from commit 24d3cbaaf5ad45b53e15d4729961fc8a8b385562)
---
 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 ea47e8168257..2140a8b2afa1 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;
@@ -561,7 +566,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);