[RHEL7,COMMIT] mm/memcontrol: warn about leaking memory on reparenting

Submitted by Konstantin Khorenko on July 1, 2019, 2:39 p.m.

Details

Message ID 201907011439.x61EdEqL004417@finist-ce7.sw.ru
State New
Series "mm/memcontrol: don't reparent forever if counter leaked."
Headers show

Commit Message

Konstantin Khorenko July 1, 2019, 2:39 p.m.
The commit is pushed to "branch-rh7-3.10.0-957.21.3.vz7.106.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-957.21.3.vz7.106.4
------>
commit fb2d3af5b3f4e122c06592549684f3b3d884cc8f
Author: Konstantin Khorenko <khorenko@virtuozzo.com>
Date:   Mon Jul 1 15:58:15 2019 +0300

    mm/memcontrol: warn about leaking memory on reparenting
    
    We expect reparent of memory cgroup is done in only 1 cycle iteration
    and would like to make sure our expectations are correct,
    so let's add a warning in case several iterations required to reparent a
    memcg.
    
    Fixes: e548e343c40b ("mm/memcontrol: don't reparent forever if counter
    leaked.")
    
    https://pmc.acronis.com/browse/VSTOR-24241
    
    Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com>
---
 mm/memcontrol.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Patch hide | download patch | download mbox

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index edc6bebc1f34..e123323f1044 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4325,6 +4325,14 @@  static void mem_cgroup_reparent_charges(struct mem_cgroup *memcg)
 		 */
 	} while ((page_counter_read(&memcg->memory) -
 		 page_counter_read(&memcg->kmem) > 0) && reparent_attempts--);
+
+	WARN_ONCE(reparent_attempts != 10,
+		  "memcg 0x%p leak suspected, performed %d iterations: "
+		  "memory=%lu, kmem=%lu",
+		  memcg,
+		  10 - reparent_attempts,
+		  page_counter_read(&memcg->memory),
+		  page_counter_read(&memcg->kmem));
 }
 
 /*