Page MenuHomeFreeBSD

D59349.diff
No OneTemporary

D59349.diff

diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -91,6 +91,11 @@
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 @@
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);

File Metadata

Mime Type
text/plain
Expires
Tue, Sep 8, 11:16 PM (9 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38523485
Default Alt Text
D59349.diff (887 B)

Event Timeline