diff mbox series

[v2] arm64: bti: Fix support for userspace only BTI

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

Commit Message

Mark Brown May 12, 2020, 11:39 a.m. UTC
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(+)

Comments

Will Deacon May 12, 2020, 5:40 p.m. UTC | #1
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,
Will Deacon May 12, 2020, 5:46 p.m. UTC | #2
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 mbox series

Patch

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)