0001 #define _GNU_SOURCE
0002 #include <assert.h>
0003 #include <errno.h>
0004 #include <fcntl.h>
0005 #include <linux/types.h>
0006 #include <sched.h>
0007 #include <signal.h>
0008 #include <stdio.h>
0009 #include <stdlib.h>
0010 #include <string.h>
0011 #include <syscall.h>
0012 #include <sys/wait.h>
0013
0014 #include "../kselftest_harness.h"
0015 #include "../pidfd/pidfd.h"
0016
0017
0018
0019
0020
0021
0022 TEST(regression_enomem)
0023 {
0024 pid_t pid;
0025
0026 if (geteuid())
0027 EXPECT_EQ(0, unshare(CLONE_NEWUSER));
0028
0029 EXPECT_EQ(0, unshare(CLONE_NEWPID));
0030
0031 pid = fork();
0032 ASSERT_GE(pid, 0);
0033
0034 if (pid == 0)
0035 exit(EXIT_SUCCESS);
0036
0037 EXPECT_EQ(0, wait_for_pid(pid));
0038
0039 pid = fork();
0040 ASSERT_LT(pid, 0);
0041 ASSERT_EQ(errno, ENOMEM);
0042 }
0043
0044 TEST_HARNESS_MAIN