aboutsummaryrefslogtreecommitdiffstats
path: root/mm/sparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/sparse.c')
-rw-r--r--mm/sparse.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/sparse.c b/mm/sparse.c
index 7a5dacaa06e3..6b8b5e91ceef 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -211,7 +211,7 @@ void __init memory_present(int nid, unsigned long start, unsigned long end)
211 if (unlikely(!mem_section)) { 211 if (unlikely(!mem_section)) {
212 unsigned long size, align; 212 unsigned long size, align;
213 213
214 size = sizeof(struct mem_section) * NR_SECTION_ROOTS; 214 size = sizeof(struct mem_section*) * NR_SECTION_ROOTS;
215 align = 1 << (INTERNODE_CACHE_SHIFT); 215 align = 1 << (INTERNODE_CACHE_SHIFT);
216 mem_section = memblock_virt_alloc(size, align); 216 mem_section = memblock_virt_alloc(size, align);
217 } 217 }
@@ -264,7 +264,11 @@ unsigned long __init node_memmap_size_bytes(int nid, unsigned long start_pfn,
264 */ 264 */
265static unsigned long sparse_encode_mem_map(struct page *mem_map, unsigned long pnum) 265static unsigned long sparse_encode_mem_map(struct page *mem_map, unsigned long pnum)
266{ 266{
267 return (unsigned long)(mem_map - (section_nr_to_pfn(pnum))); 267 unsigned long coded_mem_map =
268 (unsigned long)(mem_map - (section_nr_to_pfn(pnum)));
269 BUILD_BUG_ON(SECTION_MAP_LAST_BIT > (1UL<<PFN_SECTION_SHIFT));
270 BUG_ON(coded_mem_map & ~SECTION_MAP_MASK);
271 return coded_mem_map;
268} 272}
269 273
270/* 274/*