summaryrefslogtreecommitdiffstats
path: root/arch/s390/include/uapi/asm/sigcontext.h
diff options
context:
space:
mode:
authorMartin Schwidefsky2013-10-15 16:08:34 +0200
committerMartin Schwidefsky2013-10-24 17:17:11 +0200
commit4725c86055f5bbdcdfe47199c0715881893a2c79 (patch)
treee201bd8d8a11e58117e9ecf360f3fab43c6267e9 /arch/s390/include/uapi/asm/sigcontext.h
parents390/3270: use diagnose 0x210 for device sensing under z/VM (diff)
downloadkernel-qcow2-linux-4725c86055f5bbdcdfe47199c0715881893a2c79.tar.gz
kernel-qcow2-linux-4725c86055f5bbdcdfe47199c0715881893a2c79.tar.xz
kernel-qcow2-linux-4725c86055f5bbdcdfe47199c0715881893a2c79.zip
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>
Diffstat (limited to 'arch/s390/include/uapi/asm/sigcontext.h')
-rw-r--r--arch/s390/include/uapi/asm/sigcontext.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/s390/include/uapi/asm/sigcontext.h b/arch/s390/include/uapi/asm/sigcontext.h
index 584787f6ce44..b30de9c01bbe 100644
--- a/arch/s390/include/uapi/asm/sigcontext.h
+++ b/arch/s390/include/uapi/asm/sigcontext.h
@@ -49,6 +49,7 @@ typedef struct
typedef struct
{
unsigned int fpc;
+ unsigned int pad;
double fprs[__NUM_FPRS];
} _s390_fp_regs;