]> www.infradead.org Git - users/jedix/linux-maple.git/commit
riscv: Enable interrupt during exception handling
authorNam Cao <namcao@linutronix.de>
Wed, 25 Jun 2025 08:56:30 +0000 (10:56 +0200)
committerPalmer Dabbelt <palmer@dabbelt.com>
Wed, 16 Jul 2025 16:05:26 +0000 (09:05 -0700)
commit969f028bf2c40573ef18061f702ede3ebfe12b42
tree2a40b8b427dbbd20e4aaff3a8bbca3f0b40c9305
parente3f16d63d54e6fcf2b18812f2dd0a8d2782b5f3a
riscv: Enable interrupt during exception handling

force_sig_fault() takes a spinlock, which is a sleeping lock with
CONFIG_PREEMPT_RT=y. However, exception handling calls force_sig_fault()
with interrupt disabled, causing a sleeping in atomic context warning.

This can be reproduced using userspace programs such as:
    int main() { asm ("ebreak"); }
or
    int main() { asm ("unimp"); }

There is no reason that interrupt must be disabled while handling
exceptions from userspace.

Enable interrupt while handling user exceptions. This also has the added
benefit of avoiding unnecessary delays in interrupt handling.

Fixes: f0bddf50586d ("riscv: entry: Convert to generic entry")
Suggested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Nam Cao <namcao@linutronix.de>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20250625085630.3649485-1-namcao@linutronix.de
Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com>
arch/riscv/kernel/traps.c