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

selftests/pidfd: add first supported_mask test

Verify that when PIDFD_INFO_SUPPORTED_MASK is requested, the kernel
returns the supported_mask field indicating which flags the kernel
supports.

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

+41
+41
tools/testing/selftests/pidfd/pidfd_info_test.c
··· 690 690 EXPECT_EQ(close(pidfd_thread), 0); 691 691 } 692 692 693 + /* 694 + * Test: PIDFD_INFO_SUPPORTED_MASK field 695 + * 696 + * Verify that when PIDFD_INFO_SUPPORTED_MASK is requested, the kernel 697 + * returns the supported_mask field indicating which flags the kernel supports. 698 + */ 699 + TEST(supported_mask_field) 700 + { 701 + struct pidfd_info info = { 702 + .mask = PIDFD_INFO_SUPPORTED_MASK, 703 + }; 704 + int pidfd; 705 + pid_t pid; 706 + 707 + pid = create_child(&pidfd, 0); 708 + ASSERT_GE(pid, 0); 709 + 710 + if (pid == 0) 711 + pause(); 712 + 713 + /* Request supported_mask field */ 714 + ASSERT_EQ(ioctl(pidfd, PIDFD_GET_INFO, &info), 0); 715 + 716 + /* Verify PIDFD_INFO_SUPPORTED_MASK is set in the reply */ 717 + ASSERT_TRUE(!!(info.mask & PIDFD_INFO_SUPPORTED_MASK)); 718 + 719 + /* Verify supported_mask contains expected flags */ 720 + ASSERT_TRUE(!!(info.supported_mask & PIDFD_INFO_PID)); 721 + ASSERT_TRUE(!!(info.supported_mask & PIDFD_INFO_CREDS)); 722 + ASSERT_TRUE(!!(info.supported_mask & PIDFD_INFO_CGROUPID)); 723 + ASSERT_TRUE(!!(info.supported_mask & PIDFD_INFO_EXIT)); 724 + ASSERT_TRUE(!!(info.supported_mask & PIDFD_INFO_COREDUMP)); 725 + ASSERT_TRUE(!!(info.supported_mask & PIDFD_INFO_SUPPORTED_MASK)); 726 + ASSERT_TRUE(!!(info.supported_mask & PIDFD_INFO_COREDUMP_SIGNAL)); 727 + 728 + /* Clean up */ 729 + sys_pidfd_send_signal(pidfd, SIGKILL, NULL, 0); 730 + sys_waitid(P_PIDFD, pidfd, NULL, WEXITED); 731 + close(pidfd); 732 + } 733 + 693 734 TEST_HARNESS_MAIN