Commit 20a2191c authored by Muhammad Usama Anjum's avatar Muhammad Usama Anjum Committed by Andrew Morton
Browse files

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: default avatarMuhammad Usama Anjum <usama.anjum@collabora.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent f2943f3f
Loading
Loading
Loading
Loading
+17 −19
Original line number Diff line number Diff line
@@ -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();
}
+6 −1
Original line number Diff line number Diff line
@@ -291,7 +291,12 @@ echo "$nr_hugepgs" > /proc/sys/vm/nr_hugepages

CATEGORY="compaction" run_test ./compaction_test

if command -v sudo &> /dev/null;
then
	CATEGORY="mlock" run_test sudo -u nobody ./on-fault-limit
else
	echo "# SKIP ./on-fault-limit"
fi

CATEGORY="mmap" run_test ./map_populate