diff mbox series

arm64: consolidate rox page protection logic

Message ID E1q9T3v-00EDmW-BH@rmk-PC.armlinux.org.uk (mailing list archive)
State New, archived
Headers show
Series arm64: consolidate rox page protection logic | expand

Commit Message

Russell King (Oracle) June 14, 2023, 4:09 p.m. UTC
Consolidate the arm64 decision making for the page protections used
for executable pages, used by both the trampoline code and the kernel
text mapping code.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
Mark Rutland said when giving the ack "It seems nice to ensure this is
consistent, so regardless of whether we want the series as a whole ..."

So I'm sending this patch separately.

 arch/arm64/mm/mmu.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Comments

Catalin Marinas June 14, 2023, 5:18 p.m. UTC | #1
On Wed, 14 Jun 2023 17:09:35 +0100, Russell King (Oracle) wrote:
> Consolidate the arm64 decision making for the page protections used
> for executable pages, used by both the trampoline code and the kernel
> text mapping code.
> 
> 

Applied to arm64 (for-next/misc), thanks!

[1/1] arm64: consolidate rox page protection logic
      https://git.kernel.org/arm64/c/601eaec513cc
diff mbox series

Patch

diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index af6bc8403ee4..4829abe017e9 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -663,12 +663,17 @@  static void __init map_kernel_segment(pgd_t *pgdp, void *va_start, void *va_end,
 	vm_area_add_early(vma);
 }
 
+static pgprot_t kernel_exec_prot(void)
+{
+	return rodata_enabled ? PAGE_KERNEL_ROX : PAGE_KERNEL_EXEC;
+}
+
 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
 static int __init map_entry_trampoline(void)
 {
 	int i;
 
-	pgprot_t prot = rodata_enabled ? PAGE_KERNEL_ROX : PAGE_KERNEL_EXEC;
+	pgprot_t prot = kernel_exec_prot();
 	phys_addr_t pa_start = __pa_symbol(__entry_tramp_text_start);
 
 	/* The trampoline is always mapped and can therefore be global */
@@ -723,7 +728,7 @@  static void __init map_kernel(pgd_t *pgdp)
 	 * mapping to install SW breakpoints. Allow this (only) when
 	 * explicitly requested with rodata=off.
 	 */
-	pgprot_t text_prot = rodata_enabled ? PAGE_KERNEL_ROX : PAGE_KERNEL_EXEC;
+	pgprot_t text_prot = kernel_exec_prot();
 
 	/*
 	 * If we have a CPU that supports BTI and a kernel built for