In case of unsuccessful reparenting reparent_attempts counter
will be -1, so intended warning will not trigger. Check diff
of ->memory - ->kmem counters instead. It's correct and easier
to read.

Signed-off-by: Andrey Ryabinin <[email protected]>
---
 mm/memcontrol.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 3fabad9d409c..acbe83875cdc 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4379,7 +4379,8 @@ 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,
+       WARN_ONCE((page_counter_read(&memcg->memory) -
+                       page_counter_read(&memcg->kmem) > 0),
                  "memcg 0x%p leak suspected, performed %d iterations: "
                  "memory=%lu, kmem=%lu",
                  memcg,
-- 
2.21.0

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to