mm, memory_hotplug: initialize struct pages for the full memory section
[linux-2.6-microblaze.git] / mm / page_alloc.c
index 2ec9cc4..e2afdb2 100644 (file)
@@ -5542,6 +5542,18 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
                        cond_resched();
                }
        }
+#ifdef CONFIG_SPARSEMEM
+       /*
+        * If the zone does not span the rest of the section then
+        * we should at least initialize those pages. Otherwise we
+        * could blow up on a poisoned page in some paths which depend
+        * on full sections being initialized (e.g. memory hotplug).
+        */
+       while (end_pfn % PAGES_PER_SECTION) {
+               __init_single_page(pfn_to_page(end_pfn), end_pfn, zone, nid);
+               end_pfn++;
+       }
+#endif
 }
 
 #ifdef CONFIG_ZONE_DEVICE