From: Johannes Weiner Date: Thu, 13 Jan 2011 23:47:39 +0000 (-0800) Subject: memcg: fix unit mismatch in memcg oom limit calculation X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=f3e8eb70b1807d1b30aa6972af0cf30077c40112;p=openwrt%2Fstaging%2Fblogic.git memcg: fix unit mismatch in memcg oom limit calculation Adding the number of swap pages to the byte limit of a memory control group makes no sense. Convert the pages to bytes before adding them. The only user of this code is the OOM killer, and the way it is used means that the error results in a higher OOM badness value. Since the cgroup limit is the same for all tasks in the cgroup, the error should have no practical impact at the moment. But let's not wait for future or changing users to trip over it. Signed-off-by: Johannes Weiner Cc: Greg Thelen Cc: David Rientjes Acked-by: KAMEZAWA Hiroyuki Cc: Balbir Singh Cc: Daisuke Nishimura Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/memcontrol.c b/mm/memcontrol.c index d888956a2cfc..9f8ad77f091b 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1312,8 +1312,9 @@ u64 mem_cgroup_get_limit(struct mem_cgroup *memcg) u64 limit; u64 memsw; - limit = res_counter_read_u64(&memcg->res, RES_LIMIT) + - total_swap_pages; + limit = res_counter_read_u64(&memcg->res, RES_LIMIT); + limit += total_swap_pages << PAGE_SHIFT; + memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT); /* * If memsw is finite and limits the amount of swap space available