]> git.karo-electronics.de Git - linux-beck.git/commitdiff
s390/traps: die on translation exceptions
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Wed, 19 Nov 2014 13:05:52 +0000 (14:05 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 21 Nov 2014 07:49:33 +0000 (08:49 +0100)
Translation exceptions should never happen, since that implies that
either we screwed up the page tables or missed to properly flush the TLB.

In both cases we should not just simply kill user space or walk the kernel
exception tables. Instead an oops or a panic (panic_on_oops) is the better
answer.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/traps.c

index b7a3ccffa3454265bd01b95473881d5b7ee8da5a..f081cf1157c358dcc6c2f43f838d5037cf52def3 100644 (file)
@@ -153,8 +153,6 @@ DO_ERROR_INFO(privileged_op, SIGILL, ILL_PRVOPC,
              "privileged operation")
 DO_ERROR_INFO(special_op_exception, SIGILL, ILL_ILLOPN,
              "special operation exception")
-DO_ERROR_INFO(translation_exception, SIGILL, ILL_ILLOPN,
-             "translation exception")
 
 #ifdef CONFIG_64BIT
 DO_ERROR_INFO(transaction_exception, SIGILL, ILL_ILLOPN,
@@ -181,6 +179,12 @@ static inline void do_fp_trap(struct pt_regs *regs, int fpc)
        do_trap(regs, SIGFPE, si_code, "floating point exception");
 }
 
+void translation_exception(struct pt_regs *regs)
+{
+       /* May never happen. */
+       die(regs, "Translation exception");
+}
+
 void illegal_op(struct pt_regs *regs)
 {
        siginfo_t info;