File Index
Files and directories
Sign in
FILE

on-fault-limit.c

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/mm/on-fault-limit.c C
 1// SPDX-License-Identifier: GPL-2.0
 2#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	else
39		test_limit();
40
41	ksft_finished();
42}
~/ Read-only file preview.