brintos

brintos / linux-shallow public Read only

0
0
Text · 937 B · 431c127 Raw
43 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <sys/mman.h>3#include <stdio.h>4#include <unistd.h>5#include <string.h>6#include <sys/time.h>7#include <sys/resource.h>8#include "../kselftest.h"9 10static void test_limit(void)11{12	struct rlimit lims;13	void *map;14 15	if (getrlimit(RLIMIT_MEMLOCK, &lims))16		ksft_exit_fail_msg("getrlimit: %s\n", strerror(errno));17 18	if (mlockall(MCL_ONFAULT | MCL_FUTURE))19		ksft_exit_fail_msg("mlockall: %s\n", strerror(errno));20 21	map = mmap(NULL, 2 * lims.rlim_max, PROT_READ | PROT_WRITE,22		   MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE, -1, 0);23 24	ksft_test_result(map == MAP_FAILED, "The map failed respecting mlock limits\n");25 26	if (map != MAP_FAILED)27		munmap(map, 2 * lims.rlim_max);28	munlockall();29}30 31int main(int argc, char **argv)32{33	ksft_print_header();34	ksft_set_plan(1);35 36	if (!getuid())37		ksft_test_result_skip("The test must be run from a normal user\n");38	else39		test_limit();40 41	ksft_finished();42}43