Re: [PATCH] uprobes: Improve scalability by reducing the contention on siglock
From: Oleg Nesterov
Date: Thu Aug 01 2024 - 10:07:11 EST
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.