blob: 761de9a6400efe93d1cf837c25d48ecbe74ba5a5 [file] [log] [blame]
From: Mike Rapoport <rppt@kernel.org>
Subject: x86-module-enable-rox-caches-for-module-text-fix
Date: Fri, 11 Oct 2024 16:08:12 +0300
fix 32-bit
Link: https://lkml.kernel.org/r/ZwkjPKKxRKUoJuOE@kernel.org
Signed-off-by: Mike Rapoport <rppt@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/x86/mm/init.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
--- a/arch/x86/mm/init.c~x86-module-enable-rox-caches-for-module-text-fix
+++ a/arch/x86/mm/init.c
@@ -1065,20 +1065,30 @@ static void execmem_fill_trapping_insns(
struct execmem_info __init *execmem_arch_setup(void)
{
unsigned long start, offset = 0;
+ enum execmem_range_flags flags;
+ pgprot_t pgprot;
if (kaslr_enabled())
offset = get_random_u32_inclusive(1, 1024) * PAGE_SIZE;
start = MODULES_VADDR + offset;
+ if (IS_ENABLED(CONFIG_X86_64)) {
+ pgprot = PAGE_KERNEL_ROX;
+ flags = EXECMEM_KASAN_SHADOW | EXECMEM_ROX_CACHE;
+ } else {
+ pgprot = PAGE_KERNEL;
+ flags = EXECMEM_KASAN_SHADOW;
+ }
+
execmem_info = (struct execmem_info){
.fill_trapping_insns = execmem_fill_trapping_insns,
.ranges = {
[EXECMEM_MODULE_TEXT] = {
- .flags = EXECMEM_KASAN_SHADOW | EXECMEM_ROX_CACHE,
+ .flags = flags,
.start = start,
.end = MODULES_END,
- .pgprot = PAGE_KERNEL_ROX,
+ .pgprot = pgprot,
.alignment = MODULE_ALIGN,
},
[EXECMEM_KPROBES ... EXECMEM_BPF] = {
_