|
@@ -4138,17 +4138,22 @@ static void free_mem_cgroup_per_node_info(struct mem_cgroup *memcg, int node)
|
|
|
kfree(memcg->nodeinfo[node]);
|
|
|
}
|
|
|
|
|
|
-static void mem_cgroup_free(struct mem_cgroup *memcg)
|
|
|
+static void __mem_cgroup_free(struct mem_cgroup *memcg)
|
|
|
{
|
|
|
int node;
|
|
|
|
|
|
- memcg_wb_domain_exit(memcg);
|
|
|
for_each_node(node)
|
|
|
free_mem_cgroup_per_node_info(memcg, node);
|
|
|
free_percpu(memcg->stat);
|
|
|
kfree(memcg);
|
|
|
}
|
|
|
|
|
|
+static void mem_cgroup_free(struct mem_cgroup *memcg)
|
|
|
+{
|
|
|
+ memcg_wb_domain_exit(memcg);
|
|
|
+ __mem_cgroup_free(memcg);
|
|
|
+}
|
|
|
+
|
|
|
static struct mem_cgroup *mem_cgroup_alloc(void)
|
|
|
{
|
|
|
struct mem_cgroup *memcg;
|
|
@@ -4199,7 +4204,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
|
|
|
fail:
|
|
|
if (memcg->id.id > 0)
|
|
|
idr_remove(&mem_cgroup_idr, memcg->id.id);
|
|
|
- mem_cgroup_free(memcg);
|
|
|
+ __mem_cgroup_free(memcg);
|
|
|
return NULL;
|
|
|
}
|
|
|
|