]> git.baikalelectronics.ru Git - kernel.git/commit
riscv: Avoid enabling interrupts in die()
authorMattias Nissler <mnissler@rivosinc.com>
Wed, 15 Feb 2023 14:48:28 +0000 (14:48 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:34:29 +0000 (09:34 +0100)
commit9858199f19d4f7c5ec07c99e53da2f9472b0554e
tree0d8dadbb0c61a7c4db747daa39376d90f2932789
parent4078b5e9df30e11b270ad6f3ded1ea9d107a0ce7
riscv: Avoid enabling interrupts in die()

commit e90f0fa6653803cca52c00ee2d8ed084c32aa8c8 upstream.

While working on something else, I noticed that the kernel would start
accepting interrupts again after crashing in an interrupt handler. Since
the kernel is already in inconsistent state, enabling interrupts is
dangerous and opens up risk of kernel state deteriorating further.
Interrupts do get enabled via what looks like an unintended side effect of
spin_unlock_irq, so switch to the more cautious
spin_lock_irqsave/spin_unlock_irqrestore instead.

Fixes: 280c7b1f39a1 ("RISC-V: Init and Halt Code")
Signed-off-by: Mattias Nissler <mnissler@rivosinc.com>
Reviewed-by: Björn Töpel <bjorn@kernel.org>
Link: https://lore.kernel.org/r/20230215144828.3370316-1-mnissler@rivosinc.com
Cc: stable@vger.kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/riscv/kernel/traps.c