With CONFIG_SPARSEMEM_EXTREME, the two level of memory section descriptors are allocated from slab or bootmem. When allocating from slab, let slab allocator to clear the memory chunk. However, the memory chunk from bootmem allocator, we have to clear that explicitly. Signed-off-by: Gavin Shan <shangw@xxxxxxxxxxxxxxxxxx> --- mm/sparse.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index afd0998..ce50c8b 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -74,14 +74,14 @@ 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); + if (section) + memset(section, 0, array_size); + } return section; } -- 1.7.9.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>