On Thu 28-05-15 20:26:06, Vladimir Davydov wrote: > When trimming memcg consumption excess (see memory.high), we call > try_to_free_mem_cgroup_pages without checking if we are allowed to sleep > in the current context, which can result in a deadlock. Fix this. >
Fixes: 241994ed8649 ("mm: memcontrol: default hierarchy interface for memory") And I would make it for stable 4.0 > Signed-off-by: Vladimir Davydov <vdavy...@parallels.com> > Cc: Johannes Weiner <han...@cmpxchg.org> > Cc: Michal Hocko <mho...@suse.cz> Acked-by: Michal Hocko <mho...@suse.cz> Thanks! > --- > mm/memcontrol.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 14c2f2017e37..9da23a7ec4c0 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -2323,6 +2323,8 @@ done_restock: > css_get_many(&memcg->css, batch); > if (batch > nr_pages) > refill_stock(memcg, batch - nr_pages); > + if (!(gfp_mask & __GFP_WAIT)) > + goto done; > /* > * If the hierarchy is above the normal consumption range, > * make the charging task trim their excess contribution. > -- > 2.1.4 > -- Michal Hocko SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/