


---

 memhotplug-dave/include/linux/nonlinear.h |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletion(-)

diff -puN include/linux/nonlinear.h~C4-nonlinear-fix_pfn_valid include/linux/nonlinear.h
--- memhotplug/include/linux/nonlinear.h~C4-nonlinear-fix_pfn_valid	Thu Aug  5 09:41:09 2004
+++ memhotplug-dave/include/linux/nonlinear.h	Thu Aug  5 09:41:09 2004
@@ -97,10 +97,17 @@ extern struct page *pfn_to_page(unsigned
 extern struct page *lpfn_to_page(unsigned long lpfn);
 unsigned long page_to_pfn(struct page *page);
 
+extern void pfn_valid_debug(unsigned long);
 static inline int
 pfn_valid(unsigned long pfn)
 {
-	if (phys_section[pfn_to_section(pfn)] == INVALID_PHYS_SECTION)
+	unsigned int psection = pfn_to_section(pfn);
+
+	if (0)
+		pfn_valid(pfn);
+
+	if (psection >= NR_PHYS_SECTIONS ||
+	    phys_section[psection] == INVALID_PHYS_SECTION)
 		return 0;
 	else
 		return 1;

_
