From 813b16ff4d8932800f53d6dca17401b16179b340 Mon Sep 17 00:00:00 2001 From: Daisuke Nishimura Date: Fri, 15 Jan 2010 17:01:30 -0800 Subject: [PATCH] --- yaml --- r: 179355 b: refs/heads/master c: fce66477578d081f19aef5ea218664ff7758c33a h: refs/heads/master i: 179353: c18dea8361b63c3f2c200a8f6fe4a85a6198f6ac 179351: 31036ddcf8432cfdaf997172bf2050543b21dd61 v: v3 --- [refs] | 2 +- trunk/mm/memcontrol.c | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 25f68c7ba080..88d4723a8384 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d817cd525589765aa5f6798734e422c867685a58 +refs/heads/master: fce66477578d081f19aef5ea218664ff7758c33a diff --git a/trunk/mm/memcontrol.c b/trunk/mm/memcontrol.c index 488b644e0e8e..954032b80bed 100644 --- a/trunk/mm/memcontrol.c +++ b/trunk/mm/memcontrol.c @@ -2586,7 +2586,7 @@ static int mem_cgroup_force_empty(struct mem_cgroup *mem, bool free_all) if (free_all) goto try_to_free; move_account: - while (mem->res.usage > 0) { + do { ret = -EBUSY; if (cgroup_task_count(cgrp) || !list_empty(&cgrp->children)) goto out; @@ -2614,8 +2614,8 @@ static int mem_cgroup_force_empty(struct mem_cgroup *mem, bool free_all) if (ret == -ENOMEM) goto try_to_free; cond_resched(); - } - ret = 0; + /* "ret" should also be checked to ensure all lists are empty. */ + } while (mem->res.usage > 0 || ret); out: css_put(&mem->css); return ret; @@ -2648,10 +2648,7 @@ static int mem_cgroup_force_empty(struct mem_cgroup *mem, bool free_all) } lru_add_drain(); /* try move_account...there may be some *locked* pages. */ - if (mem->res.usage) - goto move_account; - ret = 0; - goto out; + goto move_account; } int mem_cgroup_force_empty_write(struct cgroup *cont, unsigned int event)