mm: do not call mem_cgroup_free() from within mem_cgroup_alloc()

am: 16ace91043

Change-Id: I178827e0fb40abeade0e4a148a8b09f8dcb0f32d
This commit is contained in:
Tahsin Erdogan
2017-03-15 02:28:10 +00:00
committed by android-build-merger

View File

@@ -4139,17 +4139,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;
@@ -4200,7 +4205,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;
}