From d4d2062b425adc3faa04b860ae32953e6a216b01 Mon Sep 17 00:00:00 2001 From: Xiaofeng Yuan Date: Sun, 19 Jul 2026 08:10:35 +0000 Subject: [PATCH 1/2] riscv: mm: make EXECMEM_KPROBES writable without CONFIG_STRICT_MODULE_RWX ... Signed-off-by: Xiaofeng Yuan Reviewed-by: Nam Cao Signed-off-by: Linux RISC-V bot --- arch/riscv/mm/init.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 3e450890be07e4..9a506d2beae796 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -1459,7 +1459,9 @@ struct execmem_info __init *execmem_arch_setup(void) [EXECMEM_KPROBES] = { .start = VMALLOC_START, .end = VMALLOC_END, - .pgprot = PAGE_KERNEL_READ_EXEC, + .pgprot = IS_ENABLED(CONFIG_STRICT_MODULE_RWX) ? + PAGE_KERNEL_READ_EXEC : + PAGE_KERNEL_EXEC, .alignment = 1, }, [EXECMEM_BPF] = { From 62efd1ca4b1f981e914ef28bc1860f509f79a204 Mon Sep 17 00:00:00 2001 From: Xiaofeng Yuan Date: Sun, 19 Jul 2026 08:10:36 +0000 Subject: [PATCH 2/2] riscv: patch: skip fixmap mapping when kernel text is already writable ... Signed-off-by: Xiaofeng Yuan Signed-off-by: Linux RISC-V bot --- arch/riscv/kernel/patch.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/riscv/kernel/patch.c b/arch/riscv/kernel/patch.c index 16b243376f3621..b6e8e1e83efad7 100644 --- a/arch/riscv/kernel/patch.c +++ b/arch/riscv/kernel/patch.c @@ -44,7 +44,8 @@ static __always_inline void *patch_map(void *addr, const unsigned int fixmap) uintptr_t uintaddr = (uintptr_t) addr; phys_addr_t phys; - if (core_kernel_text(uintaddr) || is_kernel_exittext(uintaddr)) { + if (IS_ENABLED(CONFIG_STRICT_KERNEL_RWX) && + (core_kernel_text(uintaddr) || is_kernel_exittext(uintaddr))) { phys = __pa_symbol(addr); } else if (IS_ENABLED(CONFIG_STRICT_MODULE_RWX)) { struct page *page = vmalloc_to_page(addr);