diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-10-30 15:16:48 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-10-30 15:16:43 +0100 |
commit | ccf45cafb0805978e6f13a672caca0e536e87cad (patch) | |
tree | f4abcadaf691ee952527ad434db3ab91b6e46e7f /arch/s390/mm | |
parent | 20b40a794baf3b4b0320c0a77ce944d5d1a01f25 (diff) | |
download | op-kernel-dev-ccf45cafb0805978e6f13a672caca0e536e87cad.zip op-kernel-dev-ccf45cafb0805978e6f13a672caca0e536e87cad.tar.gz |
[S390] addressing mode limits and psw address wrapping
An instruction with an address right below the adress limit for the
current addressing mode will wrap. The instruction restart logic in
the protection fault handler and the signal code need to follow the
wrapping rules to find the correct instruction address.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/mm')
-rw-r--r-- | arch/s390/mm/fault.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 9564fc7..a90fd91 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -393,7 +393,7 @@ void __kprobes do_protection_exception(struct pt_regs *regs, long pgm_int_code, int fault; /* Protection exception is suppressing, decrement psw address. */ - regs->psw.addr -= (pgm_int_code >> 16); + regs->psw.addr = __rewind_psw(regs->psw, pgm_int_code >> 16); /* * Check for low-address protection. This needs to be treated * as a special case because the translation exception code |