#define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include "../kselftest.h" #include "../kselftest_harness.h" #include "../pidfd/pidfd.h" /* * Regression test for: * 35f71bc0a09a ("fork: report pid reservation failure properly") * b26ebfe12f34 ("pid: Fix error return value in some cases") */ TEST(regression_enomem) { pid_t pid; if (geteuid()) EXPECT_EQ(0, unshare(CLONE_NEWUSER)); EXPECT_EQ(0, unshare(CLONE_NEWPID)); pid = fork(); ASSERT_GE(pid, 0); if (pid == 0) exit(EXIT_SUCCESS); EXPECT_EQ(0, wait_for_pid(pid)); pid = fork(); ASSERT_LT(pid, 0); ASSERT_EQ(errno, ENOMEM); } TEST_HARNESS_MAIN