Message ID | 20200512113950.29996-1-broonie@kernel.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | e4e9f6dfeedc86afef2c3fa4102d274862fe2cf9 |
Headers | show |
Series | [v2] arm64: bti: Fix support for userspace only BTI | expand |
On Tue, 12 May 2020 12:39:50 +0100, Mark Brown wrote: > 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. Applied to arm64 (for-next/bti), thanks! [1/1] arm64: bti: Fix support for userspace only BTI https://git.kernel.org/arm64/c/e70b3b544798 Cheers,
On Tue, May 12, 2020 at 06:40:36PM +0100, Will Deacon wrote: > On Tue, 12 May 2020 12:39:50 +0100, Mark Brown wrote: > > 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. > > Applied to arm64 (for-next/bti), thanks! > > [1/1] arm64: bti: Fix support for userspace only BTI > https://git.kernel.org/arm64/c/e70b3b544798 Damn, I just realised the 'Fixes:' tag is missing double-quotes around the subject. I'll fix that up now to avoid linux-next shouting at me, but it means the link above won't work any more because the SHA will change. Will
diff --git a/arch/arm64/include/asm/pgtable-prot.h b/arch/arm64/include/asm/pgtable-prot.h index 310690332896..2e7e0f452301 100644 --- a/arch/arm64/include/asm/pgtable-prot.h +++ b/arch/arm64/include/asm/pgtable-prot.h @@ -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)
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: c8027285e366 (arm64: Set GP bit in kernel page tables to enable BTI for the kernel) Signed-off-by: Mark Brown <broonie@kernel.org> --- arch/arm64/include/asm/pgtable-prot.h | 8 ++++++++ 1 file changed, 8 insertions(+)