From: Sha Zhengju Date: Thu, 10 May 2012 20:01:45 +0000 (-0700) Subject: memcg: free spare array to avoid memory leak X-Git-Tag: firefly_0821_release~7541^2~1183 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=37de6be49f6c88f7d1306594b7aae5aeee2fa499;p=firefly-linux-kernel-4.4.55.git memcg: free spare array to avoid memory leak commit 8c7577637ca31385e92769a77e2ab5b428e8b99c upstream. When the last event is unregistered, there is no need to keep the spare array anymore. So free it to avoid memory leak. Signed-off-by: Sha Zhengju Acked-by: KAMEZAWA Hiroyuki Reviewed-by: Kirill A. Shutemov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 283068f5af9f..ffb99b4e7527 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4605,6 +4605,12 @@ static void mem_cgroup_usage_unregister_event(struct cgroup *cgrp, swap_buffers: /* Swap primary and spare array */ thresholds->spare = thresholds->primary; + /* If all events are unregistered, free the spare array */ + if (!new) { + kfree(thresholds->spare); + thresholds->spare = NULL; + } + rcu_assign_pointer(thresholds->primary, new); /* To be sure that nobody uses thresholds */