diff options
| author | Gavin Shan <[email protected]> | 2012-07-31 23:46:02 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2012-08-01 01:42:49 +0000 |
| commit | 5b760e64a64c8940cdccd0ba6fce19a9bd010d20 (patch) | |
| tree | b4765cd744dd5710ba6cd4d784185247dc317cef /mm/sparse.c | |
| parent | memcg: add mem_cgroup_from_css() helper (diff) | |
| download | kernel-5b760e64a64c8940cdccd0ba6fce19a9bd010d20.tar.gz kernel-5b760e64a64c8940cdccd0ba6fce19a9bd010d20.zip | |
mm/sparse: optimize sparse_index_alloc
With CONFIG_SPARSEMEM_EXTREME, the two levels of memory section
descriptors are allocated from slab or bootmem. When allocating from
slab, let slab/bootmem allocator clear the memory chunk. We needn't clear
it explicitly.
Signed-off-by: Gavin Shan <[email protected]>
Reviewed-by: Michal Hocko <[email protected]>
Acked-by: David Rientjes <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'mm/sparse.c')
| -rw-r--r-- | mm/sparse.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/mm/sparse.c b/mm/sparse.c index 950981fd07c5..fa933f43b2c9 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -65,14 +65,12 @@ static struct mem_section noinline __init_refok *sparse_index_alloc(int nid) if (slab_is_available()) { if (node_state(nid, N_HIGH_MEMORY)) - section = kmalloc_node(array_size, GFP_KERNEL, nid); + section = kzalloc_node(array_size, GFP_KERNEL, nid); else - section = kmalloc(array_size, GFP_KERNEL); - } else + section = kzalloc(array_size, GFP_KERNEL); + } else { section = alloc_bootmem_node(NODE_DATA(nid), array_size); - - if (section) - memset(section, 0, array_size); + } return section; } |
