diff --git a/lib/libsys/pdfork.2 b/lib/libsys/pdfork.2 index ad7eecb00da..9cbeb65bc4f 100644 --- a/lib/libsys/pdfork.2 +++ b/lib/libsys/pdfork.2 @@ -114,11 +114,13 @@ for a description of the possible flags. The .Fn pdrfork -system call requires that the +system call requires that both the .Va RFPROC -or +and +.Va RFPROCDESC +flags, or .Va RFSPAWN -flag is specified. +flag are specified. .Pp .Fn pdgetpid queries the process ID (PID) in the process descriptor diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index 6313bf3bb65..36647ae44f0 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -214,6 +214,11 @@ sys_pdrfork(struct thread *td, struct pdrfork_args *uap) fr.fr_flags = RFFDG | RFPROC | RFPPWAIT | RFMEM | RFPROCDESC; fr.fr_flags2 = FR2_DROPSIG_CAUGHT; } else { + if ((uap->rfflags & (RFPROC | RFPROCDESC)) != + (RFPROC | RFPROCDESC)) { + return (EXTERROR(EINVAL, + "RFPROC|RFPROCDESC required %#jx", uap->rfflags)); + } fr.fr_flags = uap->rfflags; }