git: fea8849bacd6 - stable/15 - pdrfork(2): do require RFPROCDESC | RFPROC

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Sat, 21 Feb 2026 09:49:47 UTC
The branch stable/15 has been updated by kib:

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

commit fea8849bacd6f7d2d027f9ddce31760e94dd843d
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-02-14 16:38:23 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-02-21 09:48:58 +0000

    pdrfork(2): do require RFPROCDESC | RFPROC
    
    (cherry picked from commit b05be03ceea0a95f7783ddc890885f34bb4023d4)
---
 lib/libsys/pdfork.2  | 8 +++++---
 sys/kern/kern_fork.c | 5 +++++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/lib/libsys/pdfork.2 b/lib/libsys/pdfork.2
index ad7eecb00dae..9cbeb65bc4fc 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 595d8687c25f..a453af959bb1 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;
 	}