On book3s32 (hash), exec protection is set per 256Mb segments with NX bit. Instead of clearing NX bit on vmalloc space when CONFIG_MODULES is selected, allocate modules in a dedicated segment (0xb0000000-0xbfffffff by default). This allows to keep exec protection on vmalloc space while allowing exec on modules.
Christophe Leroy (8): powerpc/ptdump: Refactor update of st->last_pa powerpc/ptdump: Refactor update of pg_state powerpc: Set user/kernel boundary at TASK_SIZE instead of PAGE_OFFSET powerpc/lib: Prepare code-patching for modules allocated outside vmalloc space powerpc: Use MODULES_VADDR if defined powerpc/32s: Only leave NX unset on segments used for modules powerpc/32s: Kernel space starts at TASK_SIZE powerpc/32s: Use dedicated segment for modules with STRICT_KERNEL_RWX arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/book3s/32/pgtable.h | 15 ++---- arch/powerpc/include/asm/page.h | 2 +- arch/powerpc/kernel/head_32.S | 12 ++--- arch/powerpc/kernel/module.c | 11 ++++ arch/powerpc/lib/code-patching.c | 2 +- arch/powerpc/mm/book3s32/hash_low.S | 2 +- arch/powerpc/mm/book3s32/mmu.c | 17 +++++-- arch/powerpc/mm/kasan/kasan_init_32.c | 6 +++ arch/powerpc/mm/ptdump/ptdump.c | 53 ++++++++++++-------- 10 files changed, 78 insertions(+), 43 deletions(-) -- 2.25.0