Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9400d28 authored by Tahsin Erdogan's avatar Tahsin Erdogan Committed by android-build-merger
Browse files

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

am: 16ace910

Change-Id: I178827e0fb40abeade0e4a148a8b09f8dcb0f32d
parents 9512164b 16ace910
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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;
}