cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

regression_enomem.c (794B)


      1#define _GNU_SOURCE
      2#include <assert.h>
      3#include <errno.h>
      4#include <fcntl.h>
      5#include <linux/types.h>
      6#include <sched.h>
      7#include <signal.h>
      8#include <stdio.h>
      9#include <stdlib.h>
     10#include <string.h>
     11#include <syscall.h>
     12#include <sys/wait.h>
     13
     14#include "../kselftest_harness.h"
     15#include "../pidfd/pidfd.h"
     16
     17/*
     18 * Regression test for:
     19 * 35f71bc0a09a ("fork: report pid reservation failure properly")
     20 * b26ebfe12f34 ("pid: Fix error return value in some cases")
     21 */
     22TEST(regression_enomem)
     23{
     24	pid_t pid;
     25
     26	if (geteuid())
     27		EXPECT_EQ(0, unshare(CLONE_NEWUSER));
     28
     29	EXPECT_EQ(0, unshare(CLONE_NEWPID));
     30
     31	pid = fork();
     32	ASSERT_GE(pid, 0);
     33
     34	if (pid == 0)
     35		exit(EXIT_SUCCESS);
     36
     37	EXPECT_EQ(0, wait_for_pid(pid));
     38
     39	pid = fork();
     40	ASSERT_LT(pid, 0);
     41	ASSERT_EQ(errno, ENOMEM);
     42}
     43
     44TEST_HARNESS_MAIN