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

- From: Oleg Nesterov \<oleg@redhat.com\>
- Date: 2024-08-01 14:06:56 
- List: linux-trace-kernel
- Page: https://ratatoskr.run/linux-trace-kernel/2024/08/2693189
- Thread: https://ratatoskr.run/linux-trace-kernel/2024/08/2692734/t.md

```text
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.

```
