Commit f645e888 authored by Mark Brown's avatar Mark Brown Committed by Catalin Marinas
Browse files

arm64/mm: Restructure arch_validate_flags() for extensibility



Currently arch_validate_flags() is written in a very non-extensible
fashion, returning immediately if MTE is not supported and writing the MTE
check as a direct return. Since we will want to add more checks for GCS
refactor the existing code to be more extensible, no functional change
intended.

Reviewed-by: default avatarThiago Jung Bauermann <thiago.bauermann@linaro.org>
Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20241001-arm64-gcs-v13-3-222b78d87eee@kernel.org


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 9ab515b1
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -62,11 +62,17 @@ static inline bool arch_validate_prot(unsigned long prot,

static inline bool arch_validate_flags(unsigned long vm_flags)
{
	if (!system_supports_mte())
	if (system_supports_mte()) {
		/*
		 * only allow VM_MTE if VM_MTE_ALLOWED has been set
		 * previously
		 */
		if ((vm_flags & VM_MTE) && !(vm_flags & VM_MTE_ALLOWED))
			return false;
	}

	return true;

	/* only allow VM_MTE if VM_MTE_ALLOWED has been set previously */
	return !(vm_flags & VM_MTE) || (vm_flags & VM_MTE_ALLOWED);
}
#define arch_validate_flags(vm_flags) arch_validate_flags(vm_flags)