Re: [PATCH] uprobes: Improve scalability by reducing the contention on siglock

From: Liao, Chang
Date: Thu Aug 01 2024 - 21:38:21 EST




在 2024/8/1 22:06, Oleg Nesterov 写道:
> 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.

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