
Make sure to check validity of pfn

Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>
Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
---

 memhotplug-dave/mm/nonlinear.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletion(-)

diff -puN mm/nonlinear.c~C5-nonlinear-fix-pfn_to_page mm/nonlinear.c
--- memhotplug/mm/nonlinear.c~C5-nonlinear-fix-pfn_to_page	2004-08-20 11:28:09.000000000 -0700
+++ memhotplug-dave/mm/nonlinear.c	2004-08-20 11:28:09.000000000 -0700
@@ -111,7 +111,18 @@ memmap_init(unsigned long num_pages, int
 struct page *
 pfn_to_page(unsigned long pfn)
 {
-	struct page *page = &mem_section[phys_section[pfn_to_section(pfn)]].mem_map[section_offset_pfn(pfn)];
+	struct page *page;
+
+	if (!mem_section[phys_section[pfn_to_section(pfn)]].mem_map) {
+		printk("%s()\n", __func__);
+		printk("pfn_to_section(%ld): %d\n", pfn, pfn_to_section(pfn));
+		printk("phys_section[%d]: %d\n", pfn_to_section(pfn),
+				phys_section[pfn_to_section(pfn)]);
+		BUG();
+	}
+
+	page = &mem_section[phys_section[pfn_to_section(pfn)]].mem_map[section_offset_pfn(pfn)];
+
 	if (!page) {
 		printk("%s()\n", __func__);
 		printk("pfn_to_section(%ld): %d\n", pfn, pfn_to_section(pfn));
_
