Commit d09cfbbf authored by Baoquan He's avatar Baoquan He Committed by Linus Torvalds

mm/sparse.c: wrong allocation for mem_section

In commit 83e3c487 ("mm/sparsemem: Allocate mem_section at runtime
for CONFIG_SPARSEMEM_EXTREME=y") mem_section is allocated at runtime to
save memory.

It allocates the first dimension of array with sizeof(struct mem_section).

It costs extra memory, should be sizeof(struct mem_section *).

Fix it.

Fixes: 83e3c487 ("mm/sparsemem: Allocate mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y")
Signed-off-by: default avatarBaoquan He <>
Tested-by: default avatarDave Young <>
Acked-by: default avatarKirill A. Shutemov <>
Cc: Kirill A. Shutemov <>
Cc: Ingo Molnar <>
Cc: Andy Lutomirski <>
Cc: Peter Zijlstra <>
Cc: Thomas Gleixner <>
Cc: Atsushi Kumagai <>
Cc: <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent cdc346b3
......@@ -211,7 +211,7 @@ void __init memory_present(int nid, unsigned long start, unsigned long end)
if (unlikely(!mem_section)) {
unsigned long size, align;
size = sizeof(struct mem_section) * NR_SECTION_ROOTS;
size = sizeof(struct mem_section*) * NR_SECTION_ROOTS;
mem_section = memblock_virt_alloc(size, align);
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment