]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
selftests/pidfd: add fourth PIDFD_INFO_EXIT selftest
authorChristian Brauner <brauner@kernel.org>
Wed, 5 Mar 2025 10:08:23 +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-13-c8c3d8361705@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
tools/testing/selftests/pidfd/pidfd_info_test.c

index 2917e7a03b3180f0bf5ff85b2069206edd5950a7..0d0af4c2a84dca1798665b5aa714bf02215393dd 100644 (file)
@@ -177,4 +177,22 @@ TEST_F(pidfd_info, success_exit)
        ASSERT_FALSE(!!(info.mask & PIDFD_INFO_EXIT));
 }
 
+TEST_F(pidfd_info, success_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_pidfd4, PIDFD_GET_INFO, &info), 0);
+       ASSERT_EQ(errno, ESRCH);
+
+       info.mask = PIDFD_INFO_CGROUPID | PIDFD_INFO_EXIT;
+       ASSERT_EQ(ioctl(self->child_pidfd4, PIDFD_GET_INFO, &info), 0);
+       ASSERT_FALSE(!!(info.mask & PIDFD_INFO_CREDS));
+       ASSERT_TRUE(!!(info.mask & PIDFD_INFO_EXIT));
+       ASSERT_TRUE(WIFEXITED(info.exit_code));
+       ASSERT_EQ(WEXITSTATUS(info.exit_code), 0);
+}
+
 TEST_HARNESS_MAIN