On Fri, Oct 16, 2026 at 10:59 AM Qiliang Yuan <[email protected]> wrote:

> -     map->free_after_mult_rcu_gp = 
> st_ops_desc->st_ops->free_after_mult_rcu_gp;
> +     /*
> +      * A prog dissociated in map_free_pre_rcu() may still run the struct_ops
> +      * from a bpf_wq callback or a sleepable prog, under RCU tasks trace.
> +      */
> +     map->free_after_mult_rcu_gp = true;
>       map->free_after_rcu_gp = true;

In v3 thread you asked whether to leave it to each struct_ops.
No. The owner of struct_ops cannot know whether a non-sleepable prog
starts bpf_wq.

bpf_map_put() checks free_after_mult_rcu_gp first,
so free_after_rcu_gp = true is dead now. Drop it.
st_ops->free_after_mult_rcu_gp only picks the gp for cgroup prog array
after this patch. Update its comment in struct bpf_struct_ops.

pw-bot: cr

Reply via email to