diff options
author | Christian Brauner <brauner@kernel.org> | 2025-03-05 11:08:23 +0100 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2025-03-05 13:26:21 +0100 |
commit | 2e94e4c649c8802fcb9e348d9774e763169ba246 (patch) | |
tree | 5b168af04a36c48d981293c530370f51d739320c | |
parent | a79975f05e5b3c38a4aa215809e0d04928451ad9 (diff) |
selftests/pidfd: add fourth 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-13-c8c3d8361705@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
-rw-r--r-- | tools/testing/selftests/pidfd/pidfd_info_test.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/testing/selftests/pidfd/pidfd_info_test.c b/tools/testing/selftests/pidfd/pidfd_info_test.c index 2917e7a03b31..0d0af4c2a84d 100644 --- a/tools/testing/selftests/pidfd/pidfd_info_test.c +++ b/tools/testing/selftests/pidfd/pidfd_info_test.c @@ -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 |