On Thu, Aug 11, 2022 at 10:49:13AM +0800, Yafang Shao wrote: > On Thu, Aug 11, 2022 at 1:07 AM Shakeel Butt <shakeelb@xxxxxxxxxx> wrote: > > > > On Wed, Aug 10, 2022 at 03:18:30PM +0000, Yafang Shao wrote: > > > The memcg may be the root_mem_cgroup, in which case we shouldn't put it. > > > > No, it is ok to put root_mem_cgroup. css_put already handles the root > > cgroups. > > > > Ah, this commit log doesn't describe the issue clearly. I should improve it. > The issue is that in bpf_map_get_memcg() it doesn't get the objcg if > map->objcg is NULL (that can happen if the map belongs to the root > memcg), so we shouldn't put the objcg if map->objcg is NULL neither in > bpf_map_put_memcg(). Sorry I am still not understanding. We are not 'getting' objcg in bpf_map_get_memcg(). We are 'getting' memcg from map->objcg and if that is NULL the function is returning root memcg and putting root memcg is totally fine. Or are you saying that root_mem_cgroup is NULL? > Maybe the change below would be more reasonable ? > > +static void bpf_map_put_memcg(const struct bpf_map *map, struct > mem_cgroup *memcg) > +{ > + if (map->objcg) > + mem_cgroup_put(memcg); > +} > > -- > Regards > Yafang