aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2014-11-19 08:05:52 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-11-21 02:49:33 -0500
commite56da345eb529370f21f36a52bbb114ba38ad921 (patch)
tree3e16f0d15071915eb3cfd311edf2cb84dd6d56b0 /arch/s390/kernel
parent413d404768256eda4e13fdfce753fe2bbff2fcaf (diff)
s390/traps: die on translation exceptions
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>
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r--arch/s390/kernel/traps.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index b7a3ccffa345..f081cf1157c3 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -153,8 +153,6 @@ DO_ERROR_INFO(privileged_op, SIGILL, ILL_PRVOPC,
153 "privileged operation") 153 "privileged operation")
154DO_ERROR_INFO(special_op_exception, SIGILL, ILL_ILLOPN, 154DO_ERROR_INFO(special_op_exception, SIGILL, ILL_ILLOPN,
155 "special operation exception") 155 "special operation exception")
156DO_ERROR_INFO(translation_exception, SIGILL, ILL_ILLOPN,
157 "translation exception")
158 156
159#ifdef CONFIG_64BIT 157#ifdef CONFIG_64BIT
160DO_ERROR_INFO(transaction_exception, SIGILL, ILL_ILLOPN, 158DO_ERROR_INFO(transaction_exception, SIGILL, ILL_ILLOPN,
@@ -181,6 +179,12 @@ static inline void do_fp_trap(struct pt_regs *regs, int fpc)
181 do_trap(regs, SIGFPE, si_code, "floating point exception"); 179 do_trap(regs, SIGFPE, si_code, "floating point exception");
182} 180}
183 181
182void translation_exception(struct pt_regs *regs)
183{
184 /* May never happen. */
185 die(regs, "Translation exception");
186}
187
184void illegal_op(struct pt_regs *regs) 188void illegal_op(struct pt_regs *regs)
185{ 189{
186 siginfo_t info; 190 siginfo_t info;