Commit 306219d5 authored by Catalin Marinas's avatar Catalin Marinas
Browse files

kselftest/arm64: mte: Skip the hugetlb tests if MTE not supported on such mappings



While the kselftest was added at the same time with the kernel support
for MTE on hugetlb mappings, the tests may be run on older kernels. Skip
the tests if PROT_MTE is not supported on MAP_HUGETLB mappings.

Fixes: 27879e8c ("selftests: arm64: add hugetlb mte tests")
Cc: Yang Shi <yang@os.amperecomputing.com>
Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
Reviewed-by: default avatarDev Jain <dev.jain@arm.com>
Reviewed-by: default avatarYang Shi <yang@os.amperecomputing.com>
Link: https://lore.kernel.org/r/20250221093331.2184245-3-catalin.marinas@arm.com


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 7ae95109
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -227,6 +227,8 @@ static int check_child_hugetlb_memory_mapping(int mem_type, int mode, int mappin
int main(int argc, char *argv[])
{
	int err;
	void *map_ptr;
	unsigned long map_size;

	err = mte_default_setup();
	if (err)
@@ -243,6 +245,15 @@ int main(int argc, char *argv[])
		return KSFT_FAIL;
	}

	/* Check if MTE supports hugetlb mappings */
	map_size = default_huge_page_size();
	map_ptr = mmap(NULL, map_size, PROT_READ | PROT_MTE,
		       MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0);
	if (map_ptr == MAP_FAILED)
		ksft_exit_skip("PROT_MTE not supported with MAP_HUGETLB mappings\n");
	else
		munmap(map_ptr, map_size);

	/* Set test plan */
	ksft_set_plan(12);