On Thu, Oct 29, 2020 at 11:48 PM Shakeel Butt <shakeelb@xxxxxxxxxx> wrote: > > On Tue, Oct 27, 2020 at 8:50 PM Muchun Song <songmuchun@xxxxxxxxxxxxx> wrote: > > > > Consider the following memcg hierarchy. > > > > root > > / \ > > A B > > > > If we get the objcg of memcg A failed, > > Please fix the above statement. Sorry, could you be more specific, I don't quite understand. Thanks. > > > the get_obj_cgroup_from_current > > can return the wrong objcg for the root memcg. > > > > Fixes: bf4f059954dc ("mm: memcg/slab: obj_cgroup API") > > Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> > > --- > > changelog in v2: > > 1. Do not use a comparison with the root_mem_cgroup > > > > mm/memcontrol.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > > index 1337775b04f3..8c8b4c3ed5a0 100644 > > --- a/mm/memcontrol.c > > +++ b/mm/memcontrol.c > > @@ -2961,6 +2961,7 @@ __always_inline struct obj_cgroup *get_obj_cgroup_from_current(void) > > objcg = rcu_dereference(memcg->objcg); > > if (objcg && obj_cgroup_tryget(objcg)) > > break; > > + objcg = NULL; > > Roman, in your cleanup, are you planning to have objcg for root memcg as well? > > > } > > rcu_read_unlock(); > > > > -- > > 2.20.1 > > -- Yours, Muchun