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);

Reply via email to