diff options
author | Vladimir Davydov <vdavydov@parallels.com> | 2015-01-08 23:32:37 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-01-09 00:10:52 +0100 |
commit | 4bdfc1c4a943ce8707675ad510ea1076c9e8e528 (patch) | |
tree | 83451949e0afdfe0f2456977ac3d90b861ddfc6e /firmware | |
parent | mm: memcontrol: switch soft limit default back to infinity (diff) | |
download | linux-4bdfc1c4a943ce8707675ad510ea1076c9e8e528.tar.xz linux-4bdfc1c4a943ce8707675ad510ea1076c9e8e528.zip |
memcg: fix destination cgroup leak on task charges migration
We are supposed to take one css reference per each memory page and per
each swap entry accounted to a memory cgroup. However, during task
charges migration we take a reference to the destination cgroup twice
per each swap entry: first in mem_cgroup_do_precharge()->try_charge()
and then in mem_cgroup_move_swap_account(), permanently leaking the
destination cgroup.
The hunk taking the second reference seems to be a leftover from the
pre-00501b531c472 ("mm: memcontrol: rewrite charge API") era. Remove it
to fix the leak.
Fixes: e8ea14cc6ead (mm: memcontrol: take a css reference for each charged page)
Signed-off-by: Vladimir Davydov <vdavydov@parallels.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'firmware')
0 files changed, 0 insertions, 0 deletions