Commit f5259997 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Catalin Marinas

arm64: Avoid enabling KPTI unnecessarily

Commit 42c5a3b0 refactored the KPTI init code in a way that results
in the use of non-global kernel mappings even on systems that have no
need for it, and even when KPTI has been disabled explicitly via the
command line.

Ensure that this only happens when we have decided (based on the
detected system-wide CPU features) that KPTI should be enabled.

Fixes: 42c5a3b0 ("arm64: Split kpti_install_ng_mappings()")
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
Acked-by: default avatarWill Deacon <will@kernel.org>
Acked-by: default avatarMark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20231127120049.2258650-6-ardb@google.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent c0a85742
...@@ -1839,6 +1839,10 @@ static int __init __kpti_install_ng_mappings(void *__unused) ...@@ -1839,6 +1839,10 @@ static int __init __kpti_install_ng_mappings(void *__unused)
static void __init kpti_install_ng_mappings(void) static void __init kpti_install_ng_mappings(void)
{ {
/* Check whether KPTI is going to be used */
if (!cpus_have_cap(ARM64_UNMAP_KERNEL_AT_EL0))
return;
/* /*
* We don't need to rewrite the page-tables if either we've done * We don't need to rewrite the page-tables if either we've done
* it already or we have KASLR enabled and therefore have not * it already or we have KASLR enabled and therefore have not
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment