]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/s390/mm/fault.c
s390/mm: protection exception PSW for aborted transaction
[karo-tx-linux.git] / arch / s390 / mm / fault.c
index 2fb9e63b8fc44e58ae415dddefa3a067f48071da..047c3e4c59a2e4ad03ea7812b8a5da8a6ab20f9a 100644 (file)
@@ -395,8 +395,13 @@ void __kprobes do_protection_exception(struct pt_regs *regs)
        int fault;
 
        trans_exc_code = regs->int_parm_long;
-       /* Protection exception is suppressing, decrement psw address. */
-       regs->psw.addr = __rewind_psw(regs->psw, regs->int_code >> 16);
+       /*
+        * Protection exceptions are suppressing, decrement psw address.
+        * The exception to this rule are aborted transactions, for these
+        * the PSW already points to the correct location.
+        */
+       if (!(regs->int_code & 0x200))
+               regs->psw.addr = __rewind_psw(regs->psw, regs->int_code >> 16);
        /*
         * Check for low-address protection.  This needs to be treated
         * as a special case because the translation exception code