]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/pidfd: add third PIDFD_INFO_EXIT selftest
authorChristian Brauner <brauner@kernel.org>
Wed, 5 Mar 2025 10:08:22 +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-12-c8c3d8361705@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
tools/testing/selftests/pidfd/pidfd_info_test.c

index 2a5742a2a55ff9ad8e538292d12012a2e9538335..2917e7a03b3180f0bf5ff85b2069206edd5950a7 100644 (file)
@@ -161,4 +161,20 @@ TEST_F(pidfd_info, sigkill_reaped)
        ASSERT_EQ(WTERMSIG(info.exit_code), SIGKILL);
 }
 
+TEST_F(pidfd_info, success_exit)
+{
+       struct pidfd_info info = {
+               .mask = PIDFD_INFO_CGROUPID,
+       };
+
+       /* Process has exited but not been reaped so this must work. */
+       ASSERT_EQ(ioctl(self->child_pidfd3, PIDFD_GET_INFO, &info), 0);
+
+       info.mask = PIDFD_INFO_CGROUPID | PIDFD_INFO_EXIT;
+       ASSERT_EQ(ioctl(self->child_pidfd3, PIDFD_GET_INFO, &info), 0);
+       ASSERT_TRUE(!!(info.mask & PIDFD_INFO_CREDS));
+       /* Process has exited but not been reaped, so no PIDFD_INFO_EXIT information yet. */
+       ASSERT_FALSE(!!(info.mask & PIDFD_INFO_EXIT));
+}
+
 TEST_HARNESS_MAIN