linux/arch/s390/kernel
Heiko Carstens 5ebf250dab s390: fix handling of runtime instrumentation psw bit
Fix the following bugs:
- When returning from a signal the signal handler copies the saved psw mask
  from user space and uses parts of it. Especially it restores the RI bit
  unconditionally. If however the machine doesn't support RI, or RI is
  disabled for the task, the last lpswe instruction which returns to user
  space will generate a specification exception.
  To fix this check if the RI bit is allowed to be set and kill the task
  if not.
- In the compat mode signal handler code the RI bit of the psw mask gets
  propagated to the mask of the return psw: if user space enables RI in the
  signal handler, RI will also be enabled after the signal handler is
  finished.
  This is a different behaviour than with 64 bit tasks. So change this to
  match the 64 bit semantics, which restores the original RI bit value.
- Fix similar oddities within the ptrace code as well.

Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2013-10-24 17:17:11 +02:00
..
vdso32 s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
vdso64 s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
asm-offsets.c KVM fixes for 3.11 2013-07-03 13:21:40 -07:00
audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
audit.h [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
base.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
cache.c s390/cache: get rid of compile warning 2013-10-24 17:17:06 +02:00
compat_audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
compat_exec_domain.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
compat_linux.c s390/compat,uid16: use current_cred() 2013-09-07 11:58:21 +02:00
compat_linux.h s390: fix save and restore of the floating-point-control register 2013-10-24 17:17:11 +02:00
compat_ptrace.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
compat_signal.c s390: fix handling of runtime instrumentation psw bit 2013-10-24 17:17:11 +02:00
compat_wrapper.S switch compat_sys_sysctl to COMPAT_SYSCALL_DEFINE 2013-05-09 14:53:20 -04:00
cpcmd.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
crash_dump.c s390: Remove zfcpdump NR_CPUS dependency 2013-10-24 17:17:04 +02:00
debug.c s390/time: correct use of store clock fast 2013-10-22 09:16:40 +02:00
diag.c [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c s390/kprobes: allow kprobes only on known instructions 2013-10-24 17:16:50 +02:00
dumpstack.c s390/dis: move disassembler function prototypes to proper header file 2013-10-24 17:16:48 +02:00
early.c s390/mm: do not initialize storage keys 2013-10-24 17:17:00 +02:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry64.S s390: fix system call restart after inferior call 2013-09-30 13:04:40 +02:00
entry.h s390: make various functions static, add declarations to header files 2013-09-07 11:58:03 +02:00
entry.S s390: fix system call restart after inferior call 2013-09-30 13:04:40 +02:00
ftrace.c s390/ftrace: prepare_ftrace_return() function call order 2013-10-24 17:17:03 +02:00
head31.S s390/mm: let kernel text section always begin at 1MB 2012-10-09 14:16:59 +02:00
head64.S s390/mm: let kernel text section always begin at 1MB 2012-10-09 14:16:59 +02:00
head_kdump.S s390/kdump: Use 64 bit mode for 0x10000 entry point 2012-10-18 17:50:09 +02:00
head.S s390/bitops: optimize set_bit() for constant values 2013-10-24 17:16:53 +02:00
ipl.c s390/uaccess: always run the kernel in home space 2013-10-24 17:16:57 +02:00
irq.c s390/irq: reduce size of external interrupt handler hash array 2013-09-09 08:57:32 +02:00
jump_label.c s390/jump-label: add arch_jump_label_transform_static() 2011-10-25 11:54:37 -07:00
kprobes.c s390/kprobes: allow kprobes only on known instructions 2013-10-24 17:16:50 +02:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390: make various functions static, add declarations to header files 2013-09-07 11:58:03 +02:00
Makefile s390/bitops: use generic find bit functions / reimplement _left variant 2013-10-24 17:16:55 +02:00
mcount64.S s390/ftrace: fix mcount adjustment 2013-05-15 13:09:09 +02:00
mcount.S s390/ftrace: fix mcount adjustment 2013-05-15 13:09:09 +02:00
module.c s390/module: fix compile warning 2013-02-28 09:37:13 +01:00
nmi.c s390/time: clock comparator revalidation 2013-08-22 12:20:08 +02:00
os_info.c Include missing linux/slab.h inclusions 2013-04-29 15:42:01 -04:00
perf_cpum_cf.c s390/irq: rework irq subclass handling 2013-09-04 17:19:13 +02:00
perf_event.c s390/perf: Remove print_hex_dump_bytes() debug output 2013-09-04 17:19:04 +02:00
pgm_check.S s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
process.c s390: fix save and restore of the floating-point-control register 2013-10-24 17:17:11 +02:00
processor.c s390: delete __cpuinit usage from all s390 files 2013-07-14 19:36:53 -04:00
ptrace.c s390: fix handling of runtime instrumentation psw bit 2013-10-24 17:17:11 +02:00
reipl64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
reipl.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
runtime_instr.c s390/uaccess: always run the kernel in home space 2013-10-24 17:16:57 +02:00
s390_ksyms.c KVM: s390,perf: Detect if perf samples belong to KVM host or guest 2013-06-17 17:10:23 +02:00
sclp.S s390/sclp: fix new line detection 2013-06-05 17:36:21 +02:00
setup.c s390/uaccess: always run the kernel in home space 2013-10-24 17:16:57 +02:00
signal.c s390: fix handling of runtime instrumentation psw bit 2013-10-24 17:17:11 +02:00
smp.c s390: Remove zfcpdump NR_CPUS dependency 2013-10-24 17:17:04 +02:00
stacktrace.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
suspend.c s390: make various functions static, add declarations to header files 2013-09-07 11:58:03 +02:00
swsusp_asm64.S s390/hibernate: add early resume function 2013-08-30 08:57:15 +02:00
sys_s390.c teach SYSCALL_DEFINE<n> how to deal with long long/unsigned long long 2013-03-03 22:46:22 -05:00
syscalls.S switch compat_sys_sysctl to COMPAT_SYSCALL_DEFINE 2013-05-09 14:53:20 -04:00
sysinfo.c s390: delete __cpuinit usage from all s390 files 2013-07-14 19:36:53 -04:00
time.c s390/time: return with irqs disabled from psw_idle 2013-08-28 09:19:23 +02:00
topology.c s390/topology: export cpu_topology 2013-01-08 10:57:10 +01:00
traps.c s390/dumpstack: fix call chain walking 2013-04-17 14:07:28 +02:00
vdso.c s390/uaccess: always run the kernel in home space 2013-10-24 17:16:57 +02:00
vmlinux.lds.S s390/linker skript: discard exit.data at runtime 2013-02-14 15:55:21 +01:00
vtime.c s390/uaccess: always run the kernel in home space 2013-10-24 17:16:57 +02:00