diff options
author | 2024-01-25 20:46:05 +0500 | |
---|---|---|
committer | 2024-02-22 15:38:55 -0800 | |
commit | 20a2191c2ef35d58aebed704ecf8f31ff959b412 (patch) | |
tree | 7d501e307cc155a0ce66d40ee577c6d4fc1ae325 /tools/testing/selftests/mm/on-fault-limit.c | |
parent | selftests/mm: hugetlb_reparenting_test: do not unmount (diff) | |
download | linux-20a2191c2ef35d58aebed704ecf8f31ff959b412.tar.gz linux-20a2191c2ef35d58aebed704ecf8f31ff959b412.tar.bz2 linux-20a2191c2ef35d58aebed704ecf8f31ff959b412.zip |
selftests/mm: run_vmtests: remove sudo and conform to tap
Remove sudo as some test running environments may not have sudo available.
Instead skip the test if root privileges aren't available in the test.
[usama.anjum@collabora.com: on-fault-limit: run test without root privileges otherwise skip]
Link: https://lkml.kernel.org/r/20240201130538.1404897-1-usama.anjum@collabora.com
Link: https://lkml.kernel.org/r/20240125154608.720072-3-usama.anjum@collabora.com
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'tools/testing/selftests/mm/on-fault-limit.c')
-rw-r--r-- | tools/testing/selftests/mm/on-fault-limit.c | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/tools/testing/selftests/mm/on-fault-limit.c b/tools/testing/selftests/mm/on-fault-limit.c index b5888d613f34..431c1277d83a 100644 --- a/tools/testing/selftests/mm/on-fault-limit.c +++ b/tools/testing/selftests/mm/on-fault-limit.c @@ -5,40 +5,38 @@ #include <string.h> #include <sys/time.h> #include <sys/resource.h> +#include "../kselftest.h" -static int test_limit(void) +static void test_limit(void) { - int ret = 1; struct rlimit lims; void *map; - if (getrlimit(RLIMIT_MEMLOCK, &lims)) { - perror("getrlimit"); - return ret; - } + if (getrlimit(RLIMIT_MEMLOCK, &lims)) + ksft_exit_fail_msg("getrlimit: %s\n", strerror(errno)); - if (mlockall(MCL_ONFAULT | MCL_FUTURE)) { - perror("mlockall"); - return ret; - } + if (mlockall(MCL_ONFAULT | MCL_FUTURE)) + ksft_exit_fail_msg("mlockall: %s\n", strerror(errno)); map = mmap(NULL, 2 * lims.rlim_max, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE, -1, 0); + + ksft_test_result(map == MAP_FAILED, "The map failed respecting mlock limits\n"); + if (map != MAP_FAILED) - printf("mmap should have failed, but didn't\n"); - else { - ret = 0; munmap(map, 2 * lims.rlim_max); - } - munlockall(); - return ret; } int main(int argc, char **argv) { - int ret = 0; + ksft_print_header(); + ksft_set_plan(1); + + if (!getuid()) + ksft_test_result_skip("The test must be run from a normal user\n"); + else + test_limit(); - ret += test_limit(); - return ret; + ksft_finished(); } |