linux-stable/arch/arm/kernel
Kees Cook 1e6b48116a 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>
2014-10-16 14:38:54 -07:00
..
.gitignore
arch_timer.c arch_timer: Move to generic sched_clock framework 2013-10-09 16:54:10 -07:00
armksyms.c ARM: 8151/1: add missing exports for asm functions required by get_user macro 2014-09-16 16:09:30 +01:00
arthur.c
asm-offsets.c KVM: arm/arm64: vgic: move GICv2 registers to their own structure 2014-07-11 04:57:31 -07:00
atags.h ARM: constify machine_desc structure uses 2013-07-26 14:55:59 +01:00
atags_compat.c ARM: 7505/1: split out ATAGS parsing 2012-09-03 22:55:56 +01:00
atags_parse.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
atags_proc.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
bios32.c ARM/PCI: Call pcie_bus_configure_settings() to set MPS 2014-05-30 10:50:57 -06:00
calls.S ARM: wire up memfd_create syscall 2014-08-09 14:07:59 +01:00
cpuidle.c cpuidle: Add common time keeping and irq enabling 2012-03-21 01:59:40 -04:00
crash_dump.c ARM: 8012/1: kdump: Avoid overflow when converting pfn to physaddr 2014-04-07 12:10:00 +01:00
debug.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
devtree.c arm: Add devicetree fixup machine function 2014-07-29 21:26:49 -06:00
dma-isa.c
dma.c
early_printk.c early_printk: consolidate random copies of identical code 2013-04-29 18:28:13 -07:00
elf.c Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
entry-armv.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
entry-common.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
entry-header.S ARM: 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy strex 2014-08-27 15:40:13 +01:00
entry-v7m.S ARM: 7890/1: v7-M: drop using mach/entry-macro.S 2013-12-29 12:32:32 +00:00
etm.c ARM: 7905/1: etm: Remove unnecessary amba_set_drvdata() 2013-12-29 12:32:34 +00:00
fiq.c ARM: 7819/1: fiq: Cast the first argument of flush_icache_range() 2013-08-20 00:11:50 +01:00
fiqasm.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
ftrace.c ARM: 8022/1: ftrace: work with CONFIG_DEBUG_SET_MODULE_RONX 2014-04-23 01:24:31 +01:00
head-common.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
head-nommu.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
head.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
hibernate.c ARM: 8011/1: ARM hibernation / suspend-to-disk 2014-04-23 01:24:14 +01:00
hw_breakpoint.c CPU hotplug notifiers registration fixes for 3.15-rc1 2014-04-07 14:55:46 -07:00
hyp-stub.S Here are the PPC and ARM changes for KVM, which I separated because 2014-08-07 11:35:30 -07:00
insn.c ARM: fix missing bug.h include in arch/arm/kernel/insn.c 2012-03-30 11:51:46 +01:00
insn.h ARM: 7334/1: add jump label support 2012-03-24 09:38:56 +00:00
io.c ARM: 7930/1: Introduce atomic MMIO modify 2014-01-28 14:06:25 +00:00
irq.c ARM: 8133/1: use irq_set_affinity with force=false when migrating irqs 2014-09-02 20:55:25 +01:00
isa.c arm: convert use of typedef ctl_table to struct ctl_table 2014-06-06 16:08:15 -07:00
iwmmxt.S Merge branches 'fixes' and 'misc' into for-next 2014-08-05 10:27:13 +01:00
jump_label.c arm: use fixmap for text patching when text is RO 2014-10-16 14:38:53 -07:00
kgdb.c arm: kgdb: Handle read-only text / modules 2014-10-16 14:38:53 -07:00
kprobes-arm.c ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
kprobes-common.c ARM: probes: fix instruction fetch order with <asm/opcodes.h> 2014-04-01 16:45:19 +03:00
kprobes-test-arm.c ARM: kprobes: Fix test code compilation errors for ARMv4 targets 2014-07-02 12:48:36 +01:00
kprobes-test-thumb.c ARM: kprobes-test: use <asm/opcodes.h> for Thumb instruction building 2014-04-01 16:48:26 +03:00
kprobes-test.c ARM: 8179/1: kprobes-test: Fix compile error "bad immediate value for offset" 2014-09-30 16:55:24 +01:00
kprobes-test.h ARM: 8179/1: kprobes-test: Fix compile error "bad immediate value for offset" 2014-09-30 16:55:24 +01:00
kprobes-thumb.c ARM: probes: fix instruction fetch order with <asm/opcodes.h> 2014-04-01 16:45:19 +03:00
kprobes.c ARM: probes: fix instruction fetch order with <asm/opcodes.h> 2014-04-01 16:45:19 +03:00
kprobes.h ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
machine_kexec.c ARM: kexec: Make .text R/W in machine_kexec 2014-10-16 14:38:53 -07:00
Makefile arm: kgdb: Handle read-only text / modules 2014-10-16 14:38:53 -07:00
module.c ARM: 8127/1: module: add support for R_ARM_TARGET1 relocations 2014-08-27 15:40:11 +01:00
opcodes.c
patch.c arm: use fixmap for text patching when text is RO 2014-10-16 14:38:53 -07:00
patch.h arm: use fixmap for text patching when text is RO 2014-10-16 14:38:53 -07:00
perf_event.c Merge branch 'devel-stable' into for-next 2014-08-05 10:27:25 +01:00
perf_event_cpu.c ARM: 8149/1: perf: Don't sleep while atomic when enabling per-cpu interrupts 2014-09-16 16:09:33 +01:00
perf_event_v6.c arm: perf: clean up PMU names 2014-07-02 15:48:25 +01:00
perf_event_v7.c arm: perf: krait: stop using singleton PMU 2014-07-02 15:48:26 +01:00
perf_event_xscale.c arm: perf: clean up PMU names 2014-07-02 15:48:25 +01:00
perf_regs.c ARM: perf: add support for perf registers API 2013-09-30 16:41:50 +01:00
pj4-cp0.c ARM: 8040/1: pj4: properly detect existence of iWMMXt coprocessor 2014-04-25 12:07:34 +01:00
probes-arm.c ARM: kprobes: Disallow instructions with PC and register specified shift 2014-07-02 12:48:36 +01:00
probes-arm.h ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
probes-thumb.c ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
probes-thumb.h ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
probes.c ARM: probes: fix instruction fetch order with <asm/opcodes.h> 2014-04-01 16:45:19 +03:00
probes.h ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
process.c ARM: 8148/1: flush TLS and thumbee register state during exec 2014-09-16 16:09:32 +01:00
psci.c PSCI: Add initial support for PSCIv0.2 functions 2014-05-15 10:16:00 -04:00
psci_smp.c ARM: Check if a CPU has gone offline 2014-05-15 10:16:30 -04:00
ptrace.c ARM: 8087/1: ptrace: reload syscall number after secure_computing() check 2014-06-29 10:29:35 +01:00
relocate_kernel.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
return_address.c ARM: 7676/1: fix a wrong value returned from CALLER_ADDRn 2013-03-19 11:43:46 +00:00
setup.c ARM: hwcap: disable HWCAP_SWP if the CPU advertises it has exclusives 2014-07-18 12:29:51 +01:00
signal.c ARM: add uprobes support 2014-03-18 16:39:40 -04:00
sigreturn_codes.S ARM: 7895/1: signal: fix armv7-m build issue in sigreturn_codes.S 2013-11-30 22:21:00 +00:00
sleep.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
smp.c ARM: add IPI tracepoints 2014-08-07 20:40:41 -04:00
smp_scu.c ARM: 8122/1: smp_scu: enable SCU standby support 2014-08-02 08:51:53 +01:00
smp_tlb.c ARM: 8111/1: Enable erratum 798181 for Broadcom Brahma-B15 2014-07-24 14:40:26 +01:00
smp_twd.c cpufreq: remove unused notifier: CPUFREQ_{SUSPENDCHANGE|RESUMECHANGE} 2014-03-19 14:10:24 +01:00
stacktrace.c ARM: 8049/1: ftrace/add save_stack_trace_regs() implementation 2014-05-30 01:12:32 +01:00
suspend.c ARM: suspend: use hash of cpu_logical_map value to index into save array 2013-07-30 09:00:43 -04:00
swp_emulate.c ARM: 8135/1: Fix in-correct barrier usage in SWP{B} emulation 2014-09-12 17:38:58 +01:00
sys_arm.c arm: switch to generic fork/vfork/clone 2012-11-28 22:13:54 -05:00
sys_oabi-compat.c locks: rename file-private locks to "open file description locks" 2014-04-22 08:23:58 -04:00
tcm.c ARM: add permission annotations to MT_MEMORY* mapping types 2013-12-11 09:53:14 +00:00
thumbee.c ARM: 8148/1: flush TLS and thumbee register state during exec 2014-09-16 16:09:32 +01:00
time.c ARM: 8072/1: time: Make use of arm_get_current_stackframe 2014-07-18 12:29:14 +01:00
topology.c sched: Fix compiler warnings 2014-07-02 08:33:48 +02:00
traps.c ARM: 8148/1: flush TLS and thumbee register state during exec 2014-09-16 16:09:32 +01:00
unwind.c ARM: 8073/1: unwind: Use arm_get_current_stackframe 2014-07-18 12:29:16 +01:00
uprobes-arm.c ARM: add uprobes support 2014-03-18 16:39:40 -04:00
uprobes.c ARM: 8043/1: uprobes need icache flush after xol write 2014-05-25 23:48:45 +01:00
uprobes.h ARM: add uprobes support 2014-03-18 16:39:40 -04:00
v7m.c ARM: 7828/1: ARMv7-M: implement restart routine common to all v7-M machines 2013-09-02 13:49:29 +01:00
vmlinux.lds.S ARM: mm: allow non-text sections to be non-executable 2014-10-16 14:38:54 -07:00
xscale-cp0.c