LoongArch: uprobes: Remove redundant code about resume_era
authorTiezhu Yang <yangtiezhu@loongson.cn>
Wed, 14 May 2025 14:18:10 +0000 (22:18 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Wed, 14 May 2025 14:18:10 +0000 (22:18 +0800)
arch_uprobe_skip_sstep() returns true if instruction was emulated, that
is to say, there is no need to single step for the emulated instructions.
regs->csr_era will point to the destination address directly after the
exception, so the resume_era related code is redundant, just remove them.

Cc: stable@vger.kernel.org
Fixes: 19bc6cb64092 ("LoongArch: Add uprobes support")
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/include/asm/uprobes.h
arch/loongarch/kernel/uprobes.c

index 99a0d198927f8b8494ebf6e096985612602390e2..025fc3f0a1028d5d7a9f7d3a2256060be5f6dbe2 100644 (file)
@@ -15,7 +15,6 @@ typedef u32 uprobe_opcode_t;
 #define UPROBE_XOLBP_INSN      __emit_break(BRK_UPROBE_XOLBP)
 
 struct arch_uprobe {
-       unsigned long   resume_era;
        u32     insn[2];
        u32     ixol[2];
        bool    simulate;
index 0ab9d8d631c413235efb75f1e3cc5496f480e1ae..6022eb0f71dbce385a8b6d56dfdad718458bd8f2 100644 (file)
@@ -52,11 +52,7 @@ int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
 
        WARN_ON_ONCE(current->thread.trap_nr != UPROBE_TRAP_NR);
        current->thread.trap_nr = utask->autask.saved_trap_nr;
-
-       if (auprobe->simulate)
-               instruction_pointer_set(regs, auprobe->resume_era);
-       else
-               instruction_pointer_set(regs, utask->vaddr + LOONGARCH_INSN_SIZE);
+       instruction_pointer_set(regs, utask->vaddr + LOONGARCH_INSN_SIZE);
 
        return 0;
 }
@@ -86,7 +82,6 @@ bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
 
        insn.word = auprobe->insn[0];
        arch_simulate_insn(insn, regs);
-       auprobe->resume_era = regs->csr_era;
 
        return true;
 }