Re: [PATCH RFC v3 06/13] bpf: Take a Tasks Trace reader in the trampoline glue

From: Alexei Starovoitov

Date: Tue Sep 15 2026 - 23:45:38 EST


On Tue Sep 15, 2026 at 1:17 PM UTC, Josef Bacik wrote:
> +static __always_inline void bpf_tramp_read_lock_trace(void)
> +{
> + if (IS_ENABLED(CONFIG_TASKS_RCU_TRAMPOLINE_READERS))
> + rcu_read_lock_trace();
> +}
> +
> +static __always_inline void bpf_tramp_read_unlock_trace(void)
> +{
> + if (IS_ENABLED(CONFIG_TASKS_RCU_TRAMPOLINE_READERS))
> + rcu_read_unlock_trace();
> +}
> +
> +static u64 notrace __rcu_trampoline
> +__bpf_prog_enter_recur(struct bpf_prog *prog, struct bpf_tramp_run_ctx *run_ctx)
> __acquires(RCU)
> {
> + bpf_tramp_read_lock_trace();
> rcu_read_lock_dont_migrate();

This is double increment. rcu_read_lock_dont_migrate() includes
rcu_read_lock_trace().