aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include/uapi/asm/ptrace.h
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2012-11-07 10:44:08 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2012-11-12 16:24:38 +0100
commitfa968ee215c0ca91e4a9c3a69ac2405aae6e5d2f (patch)
tree1b1f45f608ab83a8b4bf741b6f439a473a6b82b6 /arch/s390/include/uapi/asm/ptrace.h
parentLinux 3.7-rc5 (diff)
downloadlinux-dev-fa968ee215c0ca91e4a9c3a69ac2405aae6e5d2f.tar.xz
linux-dev-fa968ee215c0ca91e4a9c3a69ac2405aae6e5d2f.zip
s390/signal: set correct address space control
If user space is running in primary mode it can switch to secondary or access register mode, this is used e.g. in the clock_gettime code of the vdso. If a signal is delivered to the user space process while it has been running in access register mode the signal handler is executed in access register mode as well which will result in a crash most of the time. Set the address space control bits in the PSW to the default for the execution of the signal handler and make sure that the previous address space control is restored on signal return. Take care that user space can not switch to the kernel address space by modifying the registers in the signal frame. Cc: stable@vger.kernel.org Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include/uapi/asm/ptrace.h')
-rw-r--r--arch/s390/include/uapi/asm/ptrace.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/s390/include/uapi/asm/ptrace.h b/arch/s390/include/uapi/asm/ptrace.h
index 705588a16d70..a5ca214b34fd 100644
--- a/arch/s390/include/uapi/asm/ptrace.h
+++ b/arch/s390/include/uapi/asm/ptrace.h
@@ -239,7 +239,7 @@ typedef struct
#define PSW_MASK_EA 0x00000000UL
#define PSW_MASK_BA 0x00000000UL
-#define PSW_MASK_USER 0x00003F00UL
+#define PSW_MASK_USER 0x0000FF00UL
#define PSW_ADDR_AMODE 0x80000000UL
#define PSW_ADDR_INSN 0x7FFFFFFFUL
@@ -269,7 +269,7 @@ typedef struct
#define PSW_MASK_EA 0x0000000100000000UL
#define PSW_MASK_BA 0x0000000080000000UL
-#define PSW_MASK_USER 0x00003F8180000000UL
+#define PSW_MASK_USER 0x0000FF8180000000UL
#define PSW_ADDR_AMODE 0x0000000000000000UL
#define PSW_ADDR_INSN 0xFFFFFFFFFFFFFFFFUL