Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/pidfd: add second supported_mask test

Verify that supported_mask is returned even when other fields are
requested.

Link: https://patch.msgid.link/20251028-work-coredump-signal-v1-11-ca449b7b7aa0@kernel.org
Reviewed-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>

+32
+32
tools/testing/selftests/pidfd/pidfd_info_test.c
··· 731 731 close(pidfd); 732 732 } 733 733 734 + /* 735 + * Test: PIDFD_INFO_SUPPORTED_MASK always available 736 + * 737 + * Verify that supported_mask is returned even when other fields are requested. 738 + */ 739 + TEST(supported_mask_with_other_fields) 740 + { 741 + struct pidfd_info info = { 742 + .mask = PIDFD_INFO_CGROUPID | PIDFD_INFO_SUPPORTED_MASK, 743 + }; 744 + int pidfd; 745 + pid_t pid; 746 + 747 + pid = create_child(&pidfd, 0); 748 + ASSERT_GE(pid, 0); 749 + 750 + if (pid == 0) 751 + pause(); 752 + 753 + ASSERT_EQ(ioctl(pidfd, PIDFD_GET_INFO, &info), 0); 754 + 755 + /* Both fields should be present */ 756 + ASSERT_TRUE(!!(info.mask & PIDFD_INFO_CGROUPID)); 757 + ASSERT_TRUE(!!(info.mask & PIDFD_INFO_SUPPORTED_MASK)); 758 + ASSERT_NE(info.supported_mask, 0); 759 + 760 + /* Clean up */ 761 + sys_pidfd_send_signal(pidfd, SIGKILL, NULL, 0); 762 + sys_waitid(P_PIDFD, pidfd, NULL, WEXITED); 763 + close(pidfd); 764 + } 765 + 734 766 TEST_HARNESS_MAIN