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 <hannes@cmpxchg.org>
Cc: Greg Thelen <gthelen@google.com>
Cc: David Rientjes <rientjes@google.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by Johannes Weiner and committed by Linus Torvalds f3e8eb70 dbd4ea78

+3 -2
+3 -2
mm/memcontrol.c
··· 1312 1312 u64 limit; 1313 1313 u64 memsw; 1314 1314 1315 - limit = res_counter_read_u64(&memcg->res, RES_LIMIT) + 1316 - total_swap_pages; 1315 + limit = res_counter_read_u64(&memcg->res, RES_LIMIT); 1316 + limit += total_swap_pages << PAGE_SHIFT; 1317 + 1317 1318 memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT); 1318 1319 /* 1319 1320 * If memsw is finite and limits the amount of swap space available