Re: [PATCH] memcg: fix use_hierarchy css_is_ancestor oops regression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 11 Jun 2012, Johannes Weiner wrote:
> On Sun, Jun 10, 2012 at 11:54:47AM -0700, Hugh Dickins wrote:
> > If use_hierarchy is set, reclaim testing soon oopses in css_is_ancestor()
> > called from __mem_cgroup_same_or_subtree() called from page_referenced():
> > when processes are exiting, it's easy for mm_match_cgroup() to pass along
> > a NULL memcg coming from a NULL mm->owner.
> > 
> > Check for that in __mem_cgroup_same_or_subtree().  Return true or false?
> > False because we cannot know if it was in the hierarchy, but also false
> > because it's better not to count a reference from an exiting process.
> > 
> > Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx>
> 
> Looks like an older version of the patch that introduced it slipped
> into the tree, Konstantin noted this problem during review.  The final
> version did
> 
> 	match = memcg && __mem_cgroup_same_or_subtree(root, memcg);
> 
> in the caller because of it.
> 
> Do you think it would be cleaner this way, since this is also the
> place where that memcg is looked up, and so the "can return NULL"
> handling after mem_cgroup_from_task() would be in the same place?

I don't mind, either way.

It depends on whether we add more such uses which could receive a NULL
memcg.  I tend to prefer dealing with rare conditions (which this is)
inside the callee, but common conditions before calling from the caller.

But let's let others decide.

> 
> But either way,
> 
> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>
> 
> Thanks, Hugh!

And thank you, Hannes!

Hugh

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]