]> git.karo-electronics.de Git - karo-tx-linux.git/commit
s390/signal: set correct address space control
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 7 Nov 2012 09:44:08 +0000 (10:44 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 6 Dec 2012 11:20:04 +0000 (11:20 +0000)
commitb6908c5824b42966d700c10a9c4241b5f82119e1
tree95ca55db40692c7a77deab4d3d7903c463f78303
parent5f7f7869750172ec1af2b3c489bd943db9086a2a
s390/signal: set correct address space control

commit fa968ee215c0ca91e4a9c3a69ac2405aae6e5d2f upstream.

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.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
[bwh: Backported to 3.2:
 - Adjust filename
 - The RI bit is not included in PSW_MASK_USER]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/s390/include/asm/compat.h
arch/s390/include/asm/ptrace.h
arch/s390/kernel/compat_signal.c
arch/s390/kernel/signal.c