linux/arch/s390/kernel
Martin Schwidefsky 57d7f939e7 s390: add no-execute support
Bit 0x100 of a page table, segment table of region table entry
can be used to disallow code execution for the virtual addresses
associated with the entry.

There is one tricky bit, the system call to return from a signal
is part of the signal frame written to the user stack. With a
non-executable stack this would stop working. To avoid breaking
things the protection fault handler checks the opcode that caused
the fault for 0x0a77 (sys_sigreturn) and 0x0aad (sys_rt_sigreturn)
and injects a system call. This is preferable to the alternative
solution with a stub function in the vdso because it works for
vdso=off and statically linked binaries as well.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2017-02-08 14:13:25 +01:00
..
vdso32 s390/time: steer clocksource on STP sync events 2016-10-28 10:09:02 +02:00
vdso64 s390/time: steer clocksource on STP sync events 2016-10-28 10:09:02 +02:00
.gitignore
als.c s390/sclp: don't add new lines to each printed string 2017-02-08 14:13:20 +01:00
asm-offsets.c s390: move sys_call_table and last_break from thread_info to thread_struct 2016-11-15 16:48:20 +01:00
audit.c
audit.h
base.S s390/kdump: fix nosmt kernel parameter 2015-06-25 09:39:26 +02:00
cache.c s390/cpuinfo: show dynamic and static cpu mhz 2016-06-13 15:58:17 +02:00
compat_audit.c
compat_linux.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
compat_linux.h
compat_ptrace.h
compat_signal.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
compat_wrapper.c s390: wire up copy_file_range syscall 2016-01-19 12:14:02 +01:00
cpcmd.c s390: Use pr_warn instead of pr_warning 2016-03-07 13:12:04 +01:00
crash_dump.c s390/crashdump: use list_first_entry_or_null 2016-09-20 14:26:04 +02:00
debug.c s390/debug: make debug event time stamps relative to the boot TOD clock 2017-02-07 07:27:13 +01:00
diag.c - ARM: GICv3 ITS emulation and various fixes. Removal of the old 2016-08-02 16:11:27 -04:00
dis.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
dumpstack.c s390/dumpstack: use pr_cont within show_stack and die 2016-10-24 10:26:14 +02:00
early_printk.c s390/sclp: make early sclp code readable 2017-02-08 14:13:19 +01:00
early.c s390: add no-execute support 2017-02-08 14:13:25 +01:00
ebcdic.c
entry.h s390/als: convert architecture level set code to C 2016-07-31 05:27:58 -04:00
entry.S s390: add no-execute support 2017-02-08 14:13:25 +01:00
fpu.c s390/fpu: improve kernel_fpu_[begin|end] 2016-08-29 11:05:01 +02:00
ftrace.c ftrace: Add return address pointer to ftrace_ret_stack 2016-08-24 12:15:14 +02:00
head64.S s390/thread_info: get rid of THREAD_ORDER define 2016-11-23 16:02:21 +01:00
head_kdump.S s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
head.S s390/thread_info: get rid of THREAD_ORDER define 2016-11-23 16:02:21 +01:00
idle.c
ipl.c s390/sclp: make early sclp code readable 2017-02-08 14:13:19 +01:00
irq.c s390/thread_info: get rid of THREAD_ORDER define 2016-11-23 16:02:21 +01:00
jump_label.c Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
kprobes.c s390: add no-execute support 2017-02-08 14:13:25 +01:00
lgr.c s390: kernel: make lgr explicitly non-modular 2016-10-31 17:55:42 +01:00
machine_kexec.c s390/kexec: fix crash on resize of reserved memory 2016-06-13 15:58:19 +02:00
Makefile s390/sclp: move early printk code to drivers 2017-02-08 14:13:17 +01:00
mcount.S s390: move exports to definitions 2016-08-07 23:47:20 -04:00
module.c s390: add no-execute support 2017-02-08 14:13:25 +01:00
nmi.c s390/nmi: fix inline assembly constraints 2016-12-14 16:33:41 +01:00
os_info.c s390: proper type casts for csum_partial invocations 2017-01-16 07:27:53 +01:00
perf_cpum_cf_events.c s390: remove couple of unneeded semicolons 2017-01-16 07:27:54 +01:00
perf_cpum_cf.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +01:00
perf_cpum_sf.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +01:00
perf_event.c s390/dumpstack: restore reliable indicator for call traces 2016-10-17 14:44:30 +02:00
pgm_check.S s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
process.c s390: move cputime accounting fields from thread_info to thread_struct 2016-11-11 16:37:43 +01:00
processor.c s390: report new vector facilities 2017-02-08 14:13:24 +01:00
ptrace.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
reipl.S s390/dump: rework CPU register dump code 2015-11-27 09:24:14 +01:00
relocate_kernel.S s390: remove "64" suffix from a couple of files 2015-03-25 11:49:34 +01:00
runtime_instr.c s390: remove runtime instrumentation interrupts 2015-11-03 14:40:51 +01:00
setup.c s390: report new vector facilities 2017-02-08 14:13:24 +01:00
signal.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
smp.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2016-12-13 16:33:33 -08:00
stacktrace.c s390/dumpstack: restore reliable indicator for call traces 2016-10-17 14:44:30 +02:00
suspend.c PCI: Include <linux/pci.h>, not <asm/pci.h> 2015-06-08 07:55:03 -05:00
swsusp.S s390/sclp: don't add new lines to each printed string 2017-02-08 14:13:20 +01:00
sys_s390.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
syscalls.S s390: wire up preadv2/pwritev2 syscalls 2016-04-01 08:42:38 +02:00
sysinfo.c s390/sysinfo: show partition extended name and UUID if available 2016-12-07 12:29:47 +01:00
time.c s390/debug: make debug event time stamps relative to the boot TOD clock 2017-02-07 07:27:13 +01:00
topology.c s390/topology: correct allocation of topology information 2017-02-07 07:27:12 +01:00
trace.c s390/diag: avoid lockdep recursion 2016-02-11 13:05:56 +01:00
traps.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
uprobes.c s390/uprobes: fix address space annotation 2015-03-25 11:49:47 +01:00
vdso.c vdso: make arch_setup_additional_pages wait for mmap_sem for write killable 2016-05-23 17:04:14 -07:00
vmlinux.lds.S s390: add no-execute support 2017-02-08 14:13:25 +01:00
vtime.c s390/vtime: correct system time accounting 2016-12-20 15:22:56 +01:00