linux/arch/arm64/kernel
James Morse 338d4f49d6 arm64: kernel: Add support for Privileged Access Never
'Privileged Access Never' is a new arm8.1 feature which prevents
privileged code from accessing any virtual address where read or write
access is also permitted at EL0.

This patch enables the PAN feature on all CPUs, and modifies {get,put}_user
helpers temporarily to permit access.

This will catch kernel bugs where user memory is accessed directly.
'Unprivileged loads and stores' using ldtrb et al are unaffected by PAN.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: James Morse <james.morse@arm.com>
[will: use ALTERNATIVE in asm and tidy up pan_enable check]
Signed-off-by: Will Deacon <will.deacon@arm.com>
2015-07-27 11:08:41 +01:00
..
vdso arm64: vdso: work-around broken ELF toolchains in Makefile 2015-06-19 14:54:10 +01:00
.gitignore arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
acpi.c arm64: psci: remove ACPI coupling 2015-05-27 13:22:24 +01:00
alternative.c arm64: alternative: Allow immediate branch as alternative instruction 2015-06-05 10:38:53 +01:00
arm64ksyms.c arm64: Add ftrace support 2014-05-29 09:08:08 +01:00
armv8_deprecated.c arm64: kernel: Add support for Privileged Access Never 2015-07-27 11:08:41 +01:00
asm-offsets.c arm64: KVM: Switch vgic save/restore to alternative_insn 2015-06-12 15:12:08 +01:00
cacheinfo.c arm64: kernel: add support for cpu cache information 2015-01-15 11:55:07 +00:00
cpu_errata.c arm64: fix midr range for Cortex-A57 erratum 832075 2015-04-01 11:12:03 +01:00
cpu_ops.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
cpufeature.c arm64: kernel: Add support for Privileged Access Never 2015-07-27 11:08:41 +01:00
cpuidle.c arm64: cpuidle: add __init section marker to arm_cpuidle_init 2015-07-02 17:44:27 +01:00
cpuinfo.c arm64: Extract feature parsing code from cpu_errata.c 2015-03-30 11:03:43 +01:00
debug-monitors.c KVM/ARM New features for 3.17 include: 2014-08-05 09:47:45 +02:00
efi-entry.S arm64 updates for 3.19 2014-12-09 13:12:47 -08:00
efi-stub.c arm64/efi: efistub: Apply __init annotation 2015-01-15 21:28:35 +00:00
efi.c e820, efi: add ACPI 6.0 persistent memory types 2015-05-27 21:46:05 -04:00
entry32.S arm64: entry32: remove pointless register assignment 2015-07-10 16:47:13 +01:00
entry-fpsimd.S arm64: fpsimd: fix a typo in fpsimd_save_partial_state ENDPROC 2014-07-31 11:42:42 +01:00
entry-ftrace.S arm64: ftrace: eliminate literal pool entries 2014-11-07 15:04:49 +00:00
entry.S arm64: kernel: Adopt new alternative assembler macros 2015-07-27 11:08:40 +01:00
fpsimd.c arm64: fix bug for reloading FPSIMD state after CPU hotplug. 2015-06-11 17:08:11 +01:00
ftrace.c arm64: ftrace: fix ftrace_modify_graph_caller for branch replace 2015-02-23 09:13:45 +00:00
head.S arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
hw_breakpoint.c arm64/hw_breakpoint.c: remove unnecessary header 2015-06-26 17:32:13 +01:00
hyp-stub.S irqchip: gic-v3: Initial support for GICv3 2014-07-08 22:11:47 +00:00
image.h arm64: Update the Image header 2014-07-10 12:36:40 +01:00
insn.c arm64: insn: Add aarch64_{get,set}_branch_offset 2015-06-03 15:43:24 +01:00
io.c arm64: optimize memcpy_{from,to}io() and memset_io() 2014-11-06 17:25:27 +00:00
irq.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
jump_label.c arm64: jump labels: NOP out NOP -> NOP replacement 2014-11-26 17:19:47 +00:00
kgdb.c arm64: Fix typos in KGDB macros 2014-09-25 15:35:41 +01:00
kuser32.S arm64: Add __NR_* definitions for compat syscalls 2014-07-10 11:02:40 +01:00
Makefile arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
module.c mm: vmalloc: pass additional vm_flags to __vmalloc_node_range() 2015-02-13 21:21:42 -08:00
pci.c ARM64 / ACPI: Introduce PCI stub functions for ACPI 2015-03-25 11:49:31 +00:00
perf_callchain.c arm64: perf: factor out callchain code 2015-07-27 11:08:39 +01:00
perf_event.c arm64: perf: condense event number maps 2015-07-27 11:08:40 +01:00
perf_regs.c perf: Move task_pt_regs sampling into arch code 2015-01-09 11:12:28 +01:00
process.c arm64: kernel thread don't need to save fpsimd context. 2015-06-11 15:35:23 +01:00
psci-call.S arm64: psci: move psci firmware calls out of line 2015-02-26 18:23:53 +00:00
psci.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
ptrace.c arm64: Better native ptrace support for compat tasks 2015-07-27 11:08:39 +01:00
return_address.c arm64: LLVMLinux: Use global stack pointer in return_address() 2014-09-08 14:39:19 +01:00
setup.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
signal32.c arm64: compat: print compat_sp instead of sp 2015-06-17 14:30:53 +01:00
signal.c arm64: Removed unused variable 2015-04-13 20:40:10 +02:00
sleep.S arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
smp_spin_table.c ARM64: kernel: make cpu_ops hooks DT agnostic 2015-05-19 16:09:29 +01:00
smp.c ACPI / ARM64 : use the new BAD_MADT_GICC_ENTRY macro 2015-07-07 14:55:04 +01:00
stacktrace.c arm64: LLVMLinux: Use current_stack_pointer in save_stack_trace_tsk 2014-09-08 14:39:19 +01:00
suspend.c arm64: kernel: rename __cpu_suspend to keep it aligned with arm 2015-06-19 14:46:39 +01:00
sys32.c arm64: fix implementation of mmap2 compat syscall 2015-03-19 10:43:51 +00:00
sys_compat.c arm64: compat: align cacheflush syscall with arch/arm 2014-12-01 13:31:12 +00:00
sys.c arm64: make sys_call_table const 2015-01-27 09:38:08 +00:00
time.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
topology.c arm64: topology: Fix handling of multi-level cluster MPIDR-based detection 2014-11-25 15:56:43 +00:00
trace-events-emulation.h arm64: Trace emulation of AArch32 legacy instructions 2014-11-20 16:35:02 +00:00
traps.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
vdso.c time: Rename timekeeper::tkr to timekeeper::tkr_mono 2015-03-27 09:45:06 +01:00
vmlinux.lds.S arm64: reduce ID map to a single page 2015-06-02 17:44:51 +01:00