aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorChristian Brauner <brauner@kernel.org>2025-03-05 11:08:22 +0100
committerChristian Brauner <brauner@kernel.org>2025-03-05 13:26:21 +0100
commita79975f05e5b3c38a4aa215809e0d04928451ad9 (patch)
tree80d00e76351bdf17cfe20fa0498ae99c8487926e
parentselftests/pidfd: add second PIDFD_INFO_EXIT selftest (diff)
downloadwireguard-linux-a79975f05e5b3c38a4aa215809e0d04928451ad9.tar.xz
wireguard-linux-a79975f05e5b3c38a4aa215809e0d04928451ad9.zip
selftests/pidfd: add third PIDFD_INFO_EXIT selftest
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>
-rw-r--r--tools/testing/selftests/pidfd/pidfd_info_test.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/tools/testing/selftests/pidfd/pidfd_info_test.c b/tools/testing/selftests/pidfd/pidfd_info_test.c
index 2a5742a2a55f..2917e7a03b31 100644
--- a/tools/testing/selftests/pidfd/pidfd_info_test.c
+++ b/tools/testing/selftests/pidfd/pidfd_info_test.c
@@ -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