linux_dsm_epyc7002/arch/s390/kernel
Heiko Carstens b5a882fcf1 s390: restore address space when returning to user space
Unbalanced set_fs usages (e.g. early exit from a function and a
forgotten set_fs(USER_DS) call) may lead to a situation where the
secondary asce is the kernel space asce when returning to user
space. This would allow user space to modify kernel space at will.

This would only be possible with the above mentioned kernel bug,
however we can detect this and fix the secondary asce before returning
to user space.

Therefore a new TIF_ASCE_SECONDARY which is used within set_fs. When
returning to user space check if TIF_ASCE_SECONDARY is set, which
would indicate a bug. If it is set print a message to the console,
fixup the secondary asce, and then return to user space.

This is similar to what is being discussed for x86 and arm:
"[RFC] syscalls: Restore address limit after a syscall".

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2017-02-23 10:06:38 +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 s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
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 s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
compat_linux.h s390: add support for vector extension 2014-10-09 09:14:13 +02:00
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: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
crash_dump.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
debug.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
diag.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
dis.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01: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 s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
entry.h s390: restore address space when returning to user space 2017-02-23 10:06:38 +01:00
entry.S s390: restore address space when returning to user space 2017-02-23 10:06:38 +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 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2017-02-22 10:20:04 -08:00
ipl.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
irq.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
jump_label.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01: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: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +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: restore address space when returning to user space 2017-02-23 10:06:38 +01:00
processor.c s390: report new vector facilities 2017-02-08 14:13:24 +01:00
ptrace.c s390/ptrace: Preserve previous registers for short regset write 2017-01-24 08:33:40 +01: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: get rid of MACHINE_HAS_PFMF and MACHINE_HAS_HPAGE 2017-02-17 07:41:01 +01:00
signal.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
smp.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
stacktrace.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01: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: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
time.c s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +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 s390: kernel: Audit and remove any unnecessary uses of module.h 2017-02-17 07:40:31 +01:00
vmlinux.lds.S s390: add no-execute support 2017-02-08 14:13:25 +01:00
vtime.c sched/cputime: Push time to account_system_time() in nsecs 2017-02-01 09:13:58 +01:00