[PATCH v5 1/2] riscv: mm: make EXECMEM_KPROBES writable without CONFIG_STRICT_MODULE_RWX
Lad, Prabhakar
prabhakar.csengg at gmail.com
Fri Aug 14 06:19:23 PDT 2026
On Fri, Aug 14, 2026 at 9:29 AM Xiaofeng Yuan <xiaofengmian at 163.com> wrote:
>
> When CONFIG_STRICT_MODULE_RWX is not set, execmem cannot create
> temporary writable mappings for read-only executable pages. In this
> case, the execmem ranges must already have writable permissions.
>
> Currently EXECMEM_KPROBES unconditionally uses PAGE_KERNEL_READ_EXEC,
> which causes kprobe instruction slot writes to trigger page faults
> on systems where CONFIG_STRICT_MODULE_RWX is not enabled.
>
> Fix this by using PAGE_KERNEL_EXEC when CONFIG_STRICT_MODULE_RWX
> is not available.
>
> Signed-off-by: Xiaofeng Yuan <xiaofengmian at 163.com>
> ---
> arch/riscv/mm/init.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj at bp.renesas.com>
Cheers,
Prabhakar
> diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
> index 85bdcce63a..b084a72e5d 100644
> --- a/arch/riscv/mm/init.c
> +++ b/arch/riscv/mm/init.c
> @@ -1462,7 +1462,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] = {
> --
> 2.43.0
>
More information about the linux-riscv
mailing list