>>> 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 */ >