OpenCloudOS-Kernel/arch/s390/kernel
Martin Schwidefsky 4725c86055 s390: fix save and restore of the floating-point-control register
The FPC_VALID_MASK has been used to check the validity of the value
to be loaded into the floating-point-control register. With the
introduction of the floating-point extension facility and the
decimal-floating-point additional bits have been defined which need
to be checked in a non straight forward way. So far these bits have
been ignored which can cause an incorrect results for decimal-
floating-point operations, e.g. an incorrect rounding mode to be
set after signal return.

The static check with the FPC_VALID_MASK is replaced with a trial
load of the floating-point-control value, see test_fp_ctl.

In addition an information leak with the padding word between the
floating-point-control word and the floating-point registers in
the s390_fp_regs is fixed.

Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Reviewed-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
Makefile s390/bitops: use generic find bit functions / reimplement _left variant 2013-10-24 17:16:55 +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 save and restore of the floating-point-control register 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
entry.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
entry64.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
head.S s390/bitops: optimize set_bit() for constant values 2013-10-24 17:16:53 +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
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
mcount.S s390/ftrace: fix mcount adjustment 2013-05-15 13:09:09 +02:00
mcount64.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 save and restore of the floating-point-control register 2013-10-24 17:17:11 +02:00
reipl.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
reipl64.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
relocate_kernel64.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 save and restore of the floating-point-control register 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