| From cdfb7c224a9287ac9f2ef8a11cde5cadd098f6fb Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 7 Aug 2018 16:33:48 +0530 |
| Subject: arm64: fix for bad_mode() handler to always result in panic |
| |
| From: Hari Vyas <hari.vyas@broadcom.com> |
| |
| [ Upstream commit e4ba15debcfd27f60d43da940a58108783bff2a6 ] |
| |
| The bad_mode() handler is called if we encounter an uunknown exception, |
| with the expectation that the subsequent call to panic() will halt the |
| system. Unfortunately, if the exception calling bad_mode() is taken from |
| EL0, then the call to die() can end up killing the current user task and |
| calling schedule() instead of falling through to panic(). |
| |
| Remove the die() call altogether, since we really want to bring down the |
| machine in this "impossible" case. |
| |
| Signed-off-by: Hari Vyas <hari.vyas@broadcom.com> |
| Signed-off-by: Will Deacon <will.deacon@arm.com> |
| Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm64/kernel/traps.c | 1 - |
| 1 file changed, 1 deletion(-) |
| |
| diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c |
| index a0099be4311ae..c8dc3a3640e7e 100644 |
| --- a/arch/arm64/kernel/traps.c |
| +++ b/arch/arm64/kernel/traps.c |
| @@ -611,7 +611,6 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr) |
| handler[reason], smp_processor_id(), esr, |
| esr_get_class_string(esr)); |
| |
| - die("Oops - bad mode", regs, 0); |
| local_daif_mask(); |
| panic("bad mode"); |
| } |
| -- |
| 2.20.1 |
| |