On 08/01, Liao Chang wrote: > > @@ -2276,22 +2277,25 @@ static void handle_singlestep(struct uprobe_task > *utask, struct pt_regs *regs) > int err = 0; > > uprobe = utask->active_uprobe; > - if (utask->state == UTASK_SSTEP_ACK) > + switch (utask->state) { > + case UTASK_SSTEP_ACK: > err = arch_uprobe_post_xol(&uprobe->arch, regs); > - else if (utask->state == UTASK_SSTEP_TRAPPED) > + break; > + case UTASK_SSTEP_TRAPPED: > arch_uprobe_abort_xol(&uprobe->arch, regs); > - else > + fallthrough; > + case UTASK_SSTEP_DENY_SIGNAL: > + set_tsk_thread_flag(current, TIF_SIGPENDING); > + break; > + default: > WARN_ON_ONCE(1); > + }
Liao, at first glance this change looks "obviously wrong" to me. But let me read this patch more carefully and reply on weekend, I am a bit busy right now. Thanks, Oleg.