]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
selftests/pidfd: add second PIDFD_INFO_EXIT selftest
authorChristian Brauner <brauner@kernel.org>
Wed, 5 Mar 2025 10:08:21 +0000 (11:08 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 5 Mar 2025 12:26:21 +0000 (13:26 +0100)
Add a selftest for PIDFD_INFO_EXIT behavior.

Link: https://lore.kernel.org/r/20250305-work-pidfs-kill_on_last_close-v3-11-c8c3d8361705@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
tools/testing/selftests/pidfd/pidfd_info_test.c

index cc1d3d5eba59f28e2c9f3a6a01f3f38a237ecf2a..2a5742a2a55ff9ad8e538292d12012a2e9538335 100644 (file)
@@ -143,4 +143,22 @@ TEST_F(pidfd_info, sigkill_exit)
        ASSERT_FALSE(!!(info.mask & PIDFD_INFO_EXIT));
 }
 
+TEST_F(pidfd_info, sigkill_reaped)
+{
+       struct pidfd_info info = {
+               .mask = PIDFD_INFO_CGROUPID,
+       };
+
+       /* Process has already been reaped and PIDFD_INFO_EXIT hasn't been set. */
+       ASSERT_NE(ioctl(self->child_pidfd2, PIDFD_GET_INFO, &info), 0);
+       ASSERT_EQ(errno, ESRCH);
+
+       info.mask = PIDFD_INFO_CGROUPID | PIDFD_INFO_EXIT;
+       ASSERT_EQ(ioctl(self->child_pidfd2, PIDFD_GET_INFO, &info), 0);
+       ASSERT_FALSE(!!(info.mask & PIDFD_INFO_CREDS));
+       ASSERT_TRUE(!!(info.mask & PIDFD_INFO_EXIT));
+       ASSERT_TRUE(WIFSIGNALED(info.exit_code));
+       ASSERT_EQ(WTERMSIG(info.exit_code), SIGKILL);
+}
+
 TEST_HARNESS_MAIN