]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
memcg: free spare array to avoid memory leak
authorSha Zhengju <handai.szj@taobao.com>
Thu, 3 May 2012 05:43:10 +0000 (15:43 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 3 May 2012 05:46:11 +0000 (15:46 +1000)
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 <handai.szj@taobao.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Reviewed-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memcontrol.c

index bdf43048e1e60d95ffc1b0534afe804eeec82599..e379af2ce91f437290306b97f239d94f224a78d5 100644 (file)
@@ -4523,6 +4523,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 */