git: c2c3881f70ac - stable/15 - pdrfork(2) tests: catch runaway child for EFAULT test

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

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

commit c2c3881f70acbd02baaa591497edc396323ae853
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-02-16 10:04:26 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-02-21 09:48:58 +0000

    pdrfork(2) tests: catch runaway child for EFAULT test
    
    (cherry picked from commit 44843695bc4e36abd15835d627da7d38c06f2219)
---
 tests/sys/kern/pdrfork.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tests/sys/kern/pdrfork.c b/tests/sys/kern/pdrfork.c
index 1003ad9dc746..943e7fde835a 100644
--- a/tests/sys/kern/pdrfork.c
+++ b/tests/sys/kern/pdrfork.c
@@ -95,11 +95,21 @@ ATF_TC_WITHOUT_HEAD(efault);
 ATF_TC_BODY(efault, tc)
 {
 	void *unmapped;
+	pid_t my_pid;
 
 	unmapped = mmap(NULL, PAGE_SIZE, PROT_NONE, MAP_GUARD, -1, 0);
 	ATF_REQUIRE(unmapped != MAP_FAILED);
+	my_pid = getpid();
 	ATF_REQUIRE_ERRNO(EFAULT, pdrfork(unmapped, 0, RFPROC |
 	    RFPROCDESC) < 0);
+
+	/*
+	 * EFAULT only means that the copyout of the procdesc failed.
+	 * The runaway child was created anyway.  Prevent
+	 * double-destruction of the atf stuff.
+	 */
+	if (my_pid != getpid())
+		_exit(0);
 }
 
 /* Invalid combinations of flags should return EINVAL */