diff options
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index c339d7431bda..6424ba0fce83 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -4216,13 +4216,11 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *mem, int node) | |||
4216 | */ | 4216 | */ |
4217 | if (!node_state(node, N_NORMAL_MEMORY)) | 4217 | if (!node_state(node, N_NORMAL_MEMORY)) |
4218 | tmp = -1; | 4218 | tmp = -1; |
4219 | pn = kmalloc_node(sizeof(*pn), GFP_KERNEL, tmp); | 4219 | pn = kzalloc_node(sizeof(*pn), GFP_KERNEL, tmp); |
4220 | if (!pn) | 4220 | if (!pn) |
4221 | return 1; | 4221 | return 1; |
4222 | 4222 | ||
4223 | mem->info.nodeinfo[node] = pn; | 4223 | mem->info.nodeinfo[node] = pn; |
4224 | memset(pn, 0, sizeof(*pn)); | ||
4225 | |||
4226 | for (zone = 0; zone < MAX_NR_ZONES; zone++) { | 4224 | for (zone = 0; zone < MAX_NR_ZONES; zone++) { |
4227 | mz = &pn->zoneinfo[zone]; | 4225 | mz = &pn->zoneinfo[zone]; |
4228 | for_each_lru(l) | 4226 | for_each_lru(l) |
@@ -4246,14 +4244,13 @@ static struct mem_cgroup *mem_cgroup_alloc(void) | |||
4246 | 4244 | ||
4247 | /* Can be very big if MAX_NUMNODES is very big */ | 4245 | /* Can be very big if MAX_NUMNODES is very big */ |
4248 | if (size < PAGE_SIZE) | 4246 | if (size < PAGE_SIZE) |
4249 | mem = kmalloc(size, GFP_KERNEL); | 4247 | mem = kzalloc(size, GFP_KERNEL); |
4250 | else | 4248 | else |
4251 | mem = vmalloc(size); | 4249 | mem = vzalloc(size); |
4252 | 4250 | ||
4253 | if (!mem) | 4251 | if (!mem) |
4254 | return NULL; | 4252 | return NULL; |
4255 | 4253 | ||
4256 | memset(mem, 0, size); | ||
4257 | mem->stat = alloc_percpu(struct mem_cgroup_stat_cpu); | 4254 | mem->stat = alloc_percpu(struct mem_cgroup_stat_cpu); |
4258 | if (!mem->stat) | 4255 | if (!mem->stat) |
4259 | goto out_free; | 4256 | goto out_free; |