memcg: do not expose uninitialized mem_cgroup_per_node to world
If somebody is touching data too early, it might be easier to diagnose a problem when dereferencing NULL at mem->info.nodeinfo[node] than trying to understand why mem_cgroup_per_zone is [un|partly]initialized. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Acked-by: Michal Hocko <mhocko@suse.cz> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
715a5ee82a
commit
0a619e5870
@@ -4742,7 +4742,6 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *memcg, int node)
|
|||||||
if (!pn)
|
if (!pn)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
memcg->info.nodeinfo[node] = pn;
|
|
||||||
for (zone = 0; zone < MAX_NR_ZONES; zone++) {
|
for (zone = 0; zone < MAX_NR_ZONES; zone++) {
|
||||||
mz = &pn->zoneinfo[zone];
|
mz = &pn->zoneinfo[zone];
|
||||||
for_each_lru(l)
|
for_each_lru(l)
|
||||||
@@ -4751,6 +4750,7 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *memcg, int node)
|
|||||||
mz->on_tree = false;
|
mz->on_tree = false;
|
||||||
mz->mem = memcg;
|
mz->mem = memcg;
|
||||||
}
|
}
|
||||||
|
memcg->info.nodeinfo[node] = pn;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user