>>> If so, we might wanna fix it in a different way,
>>> just checking if (!(css->flags & CSS_NO_REF)) in cgroup_bpf_put()
>>> like in cgroup_put(). It feels more reliable to me.
>>>
>>
>> Yeah I also have this idea in my mind.
>
> I wonder if the following patch will fix the issue?
>
I guess so, but it's better we have someone who reported this bug to
test it.
> --
>
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index 4598e4da6b1b..7eb51137d896 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -942,12 +942,14 @@ static inline bool cgroup_task_frozen(struct
> task_struct *task)
> #ifdef CONFIG_CGROUP_BPF
> static inline void cgroup_bpf_get(struct cgroup *cgrp)
> {
> - percpu_ref_get(&cgrp->bpf.refcnt);
> + if (!(cgrp->self.flags & CSS_NO_REF))
> + percpu_ref_get(&cgrp->bpf.refcnt);
> }
>
> static inline void cgroup_bpf_put(struct cgroup *cgrp)
> {
> - percpu_ref_put(&cgrp->bpf.refcnt);
> + if (!(cgrp->self.flags & CSS_NO_REF))
> + percpu_ref_put(&cgrp->bpf.refcnt);
> }
>
> #else /* CONFIG_CGROUP_BPF */
>