git: 24d3cbaaf5ad - main - kern_fork.c: add kern.pdfork_implicit_nowaitpid sysctl

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Mon, 07 Sep 2026 16:04:38 UTC
The branch main has been updated by kib:

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

commit 24d3cbaaf5ad45b53e15d4729961fc8a8b385562
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-09-03 17:56:13 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
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);