ARM: mm: allow non-text sections to be non-executable
authorKees Cook <keescook@chromium.org>
Fri, 4 Apr 2014 00:28:11 +0000 (17:28 -0700)
committerKees Cook <keescook@chromium.org>
Thu, 16 Oct 2014 21:38:54 +0000 (14:38 -0700)
commit1e6b48116a95046ec51f3d40f83aff8b006674d7
tree1c18e08416613ef84513cb2cd52679e7af6d4d7c
parent23a4e4050ba9c98ab67db0980a9fb20e5096d9ea
ARM: mm: allow non-text sections to be non-executable

Adds CONFIG_ARM_KERNMEM_PERMS to separate the kernel memory regions
into section-sized areas that can have different permisions. Performs
the NX permission changes during free_initmem, so that init memory can be
reclaimed.

This uses section size instead of PMD size to reduce memory lost to
padding on non-LPAE systems.

Based on work by Brad Spengler, Larry Bassel, and Laura Abbott.

Signed-off-by: Kees Cook <keescook@chromium.org>
Tested-by: Laura Abbott <lauraa@codeaurora.org>
Acked-by: Nicolas Pitre <nico@linaro.org>
arch/arm/kernel/vmlinux.lds.S
arch/arm/mm/Kconfig
arch/arm/mm/init.c
arch/arm/mm/mmu.c