Messages in this thread | | | From | Guo Ren <> | Date | Fri, 5 May 2023 18:01:25 +0800 | Subject | Re: [PATCH] riscv: uprobes: Restore thread.bad_cause |
| |
Thx for fixup.
Reviewed-by: Guo Ren <guoren@kernel.org>
On Sun, Apr 23, 2023 at 9:42 AM Tiezhu Yang <yangtiezhu@loongson.cn> wrote: > > thread.bad_cause is saved in arch_uprobe_pre_xol(), it should be restored > in arch_uprobe_{post,abort}_xol() accordingly, otherwise the save operation > is meaningless, this change is similar with x86 and powerpc. > > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> > --- > arch/riscv/kernel/probes/uprobes.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/riscv/kernel/probes/uprobes.c b/arch/riscv/kernel/probes/uprobes.c > index c976a21..194f166 100644 > --- a/arch/riscv/kernel/probes/uprobes.c > +++ b/arch/riscv/kernel/probes/uprobes.c > @@ -67,6 +67,7 @@ int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs) > struct uprobe_task *utask = current->utask; > > WARN_ON_ONCE(current->thread.bad_cause != UPROBE_TRAP_NR); > + current->thread.bad_cause = utask->autask.saved_cause; > > instruction_pointer_set(regs, utask->vaddr + auprobe->insn_size); > > @@ -102,6 +103,7 @@ void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs) > { > struct uprobe_task *utask = current->utask; > > + current->thread.bad_cause = utask->autask.saved_cause; > /* > * Task has received a fatal signal, so reset back to probbed > * address. > -- > 2.1.0 >
-- Best Regards Guo Ren
| |