[PATCH] riscv: vector: Mark riscv_v_context_nesting_start/end as noinstr
From: hu.shengming
Date: Fri Apr 03 2026 - 02:13:46 EST
From: Luo Haiyang <luo.haiyang@xxxxxxxxxx>
The functions riscv_v_context_nesting_start() and
riscv_v_context_nesting_end() are invoked in exception handling paths.
Allowing kprobes, function tracing on these functions could lead to
recursive exceptions or crashes.
Signed-off-by: Luo Haiyang <luo.haiyang@xxxxxxxxxx>
Signed-off-by: Shengming Hu <hu.shengming@xxxxxxxxxx>
---
arch/riscv/kernel/kernel_mode_vector.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/riscv/kernel/kernel_mode_vector.c b/arch/riscv/kernel/kernel_mode_vector.c
index 99972a48e86b..1b2b9e4574b8 100644
--- a/arch/riscv/kernel/kernel_mode_vector.c
+++ b/arch/riscv/kernel/kernel_mode_vector.c
@@ -152,7 +152,7 @@ static int riscv_v_start_kernel_context(bool *is_nested)
}
/* low-level V context handling code, called with irq disabled */
-asmlinkage void riscv_v_context_nesting_start(struct pt_regs *regs)
+asmlinkage void noinstr riscv_v_context_nesting_start(struct pt_regs *regs)
{
int depth;
@@ -166,7 +166,7 @@ asmlinkage void riscv_v_context_nesting_start(struct pt_regs *regs)
riscv_v_ctx_depth_inc();
}
-asmlinkage void riscv_v_context_nesting_end(struct pt_regs *regs)
+asmlinkage void noinstr riscv_v_context_nesting_end(struct pt_regs *regs)
{
struct __riscv_v_ext_state *vstate = ¤t->thread.kernel_vstate;
u32 depth;
--
2.25.1