在 2024/8/1 22:06, Oleg Nesterov 写道:
On 08/01, Liao Chang wrote:
quoted
@@ -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.
Oleg. Did i overlook some thing obvious here?
But let me read this patch more carefully and reply on weekend,
I am a bit busy right now.
Sure, thanks.
Thanks,
Oleg.
--
BR
Liao, Chang