linux_dsm_epyc7002/arch/arm/kernel
Thomas Garnier e33f8d3267 arm/syscalls: Optimize address limit check
Disable the generic address limit check in favor of an architecture
specific optimized implementation. The generic implementation using
pending work flags did not work well with ARM and alignment faults.

The address limit is checked on each syscall return path to user-mode
path as well as the irq user-mode return function. If the address limit
was changed, a function is called to report data corruption (stopping
the kernel or process based on configuration).

The address limit check has to be done before any pending work because
they can reset the address limit and the process is killed using a
SIGKILL signal. For example the lkdtm address limit check does not work
because the signal to kill the process will reset the user-mode address
limit.

Signed-off-by: Thomas Garnier <thgarnie@google.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Tested-by: Kees Cook <keescook@chromium.org>
Tested-by: Leonard Crestez <leonard.crestez@nxp.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Pratyush Anand <panand@redhat.com>
Cc: Dave Martin <Dave.Martin@arm.com>
Cc: Will Drewry <wad@chromium.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: David Howells <dhowells@redhat.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: linux-api@vger.kernel.org
Cc: Yonghong Song <yhs@fb.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1504798247-48833-4-git-send-email-keescook@chromium.org
2017-09-17 19:45:33 +02:00
..
.gitignore
arch_timer.c
armksyms.c ARM: implement memset32 & memset64 2017-09-08 18:26:48 -07:00
asm-offsets.c
atags_compat.c
atags_parse.c
atags_proc.c
atags.h
bios32.c
cpuidle.c ARM: Convert to using %pOF instead of full_name 2017-08-16 22:25:30 +02:00
crash_dump.c
debug.S
devtree.c ARM: Convert to using %pOF instead of full_name 2017-08-16 22:25:30 +02:00
dma-isa.c
dma.c
early_printk.c
efi.c
elf.c
entry-armv.S Merge branches 'fixes' and 'misc' into for-linus 2017-09-09 16:34:41 +01:00
entry-common.S arm/syscalls: Optimize address limit check 2017-09-17 19:45:33 +02:00
entry-ftrace.S
entry-header.S
entry-v7m.S
fiq.c
fiqasm.S
ftrace.c
head-common.S
head-nommu.S
head.S ARM: align .data section 2017-08-14 16:22:55 +01:00
hibernate.c
hw_breakpoint.c
hyp-stub.S ARM: align .data section 2017-08-14 16:22:55 +01:00
insn.c
io.c
irq.c
isa.c
iwmmxt.S ARM: align .data section 2017-08-14 16:22:55 +01:00
jump_label.c
kgdb.c
machine_kexec.c
Makefile
module-plts.c
module.c
module.lds
opcodes.c
paravirt.c
patch.c
perf_callchain.c
perf_event_v6.c
perf_event_v7.c
perf_event_xscale.c
perf_regs.c
pj4-cp0.c
process.c
psci_smp.c
ptrace.c
reboot.c
reboot.h
relocate_kernel.S
return_address.c
setup.c
signal.c arm/syscalls: Optimize address limit check 2017-09-17 19:45:33 +02:00
sigreturn_codes.S
sleep.S ARM: align .data section 2017-08-14 16:22:55 +01:00
smccc-call.S
smp_scu.c
smp_tlb.c
smp_twd.c
smp.c
stacktrace.c ARM: 8691/1: Export save_stack_trace_tsk() 2017-09-09 16:26:42 +01:00
suspend.c
swp_emulate.c
sys_arm.c
sys_oabi-compat.c
tcm.c
thumbee.c
time.c
topology.c ARM: Convert to using %pOF instead of full_name 2017-08-16 22:25:30 +02:00
traps.c
unwind.c
v7m.c
vdso.c
vmlinux-xip.lds.S
vmlinux.lds.S
xscale-cp0.c