From: Heiko Carstens Date: Wed, 18 Feb 2015 13:17:14 +0000 (+0100) Subject: s390/traps: panic() instead of die() on translation exception X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=e1d12d70f7467c3b26cbd0c14139dcddec88448d;p=deliverable%2Flinux.git s390/traps: panic() instead of die() on translation exception In case of a translation exception the page tables are corrupted. If the exception handler then calls die() which again calls show_regs() -> show_code() -> copy_from_user(), the kernel may access the same memory location again and generates yet another translation exception. Which in turn will lead to a deadlock on the die_lock spinlock, which the kernel tries to grab recursively. Given that the page tables are corrupted anyway, if we see such an exception, let's simply panic. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky --- diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 8be11c22ed17..4d96c9f53455 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c @@ -174,7 +174,7 @@ static inline void do_fp_trap(struct pt_regs *regs, int fpc) void translation_exception(struct pt_regs *regs) { /* May never happen. */ - die(regs, "Translation exception"); + panic("Translation exception"); } void illegal_op(struct pt_regs *regs)