[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