This patch calls css_put() after last kmem uncharge in uncharge_batch. and releases a reference taken in memcg_deactivate_kmem.
https://bugs.openvz.org/browse/OVZ-7250 Signed-off-by: Vasily Averin <[email protected]> --- mm/memcontrol.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 24e3bd7..3c2538d 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -7875,10 +7875,11 @@ static void uncharge_batch(struct mem_cgroup *memcg, unsigned long pgpgout, unsigned long nr_shmem, struct page *dummy_page) { unsigned long flags; + u64 kmem = 1; if (!mem_cgroup_is_root(memcg)) { if (nr_kmem) - page_counter_uncharge(&memcg->kmem, nr_kmem); + kmem = page_counter_uncharge(&memcg->kmem, nr_kmem); if (nr_mem + nr_kmem) page_counter_uncharge(&memcg->memory, nr_mem + nr_kmem); if (nr_memsw + nr_kmem) @@ -7898,6 +7899,8 @@ static void uncharge_batch(struct mem_cgroup *memcg, unsigned long pgpgout, __this_cpu_add(memcg->stat->nr_page_events, nr_anon + nr_file); memcg_check_events(memcg, dummy_page); local_irq_restore(flags); + if (kmem == 0) + memcg_kmem_release_css(memcg); } static void uncharge_list(struct list_head *page_list) -- 1.8.3.1 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
