Commit e4e9f6df authored by Mark Brown's avatar Mark Brown Committed by Will Deacon
Browse files

arm64: bti: Fix support for userspace only BTI



When setting PTE_MAYBE_GP we check system_supports_bti() but this is
true for systems where only CONFIG_BTI is set causing us to enable BTI
on some kernel text. Add an extra check for the kernel mode option,
using an ifdef due to line length.

Fixes: c8027285 ("arm64: Set GP bit in kernel page tables to enable BTI for the kernel")
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20200512113950.29996-1-broonie@kernel.org


Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 3a88d7c5
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -32,7 +32,15 @@ extern bool arm64_use_ng_mappings;
#define PTE_MAYBE_NG		(arm64_use_ng_mappings ? PTE_NG : 0)
#define PMD_MAYBE_NG		(arm64_use_ng_mappings ? PMD_SECT_NG : 0)

/*
 * If we have userspace only BTI we don't want to mark kernel pages
 * guarded even if the system does support BTI.
 */
#ifdef CONFIG_ARM64_BTI_KERNEL
#define PTE_MAYBE_GP		(system_supports_bti() ? PTE_GP : 0)
#else
#define PTE_MAYBE_GP		0
#endif

#define PROT_DEFAULT		(_PROT_DEFAULT | PTE_MAYBE_NG)
#define PROT_SECT_DEFAULT	(_PROT_SECT_DEFAULT | PMD_MAYBE_NG)