|
@@ -287,7 +287,11 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
|
|
|
#ifdef CONFIG_HAVE_ARCH_PFN_VALID
|
|
|
int pfn_valid(unsigned long pfn)
|
|
|
{
|
|
|
- return memblock_is_map_memory(pfn << PAGE_SHIFT);
|
|
|
+ phys_addr_t addr = pfn << PAGE_SHIFT;
|
|
|
+
|
|
|
+ if ((addr >> PAGE_SHIFT) != pfn)
|
|
|
+ return 0;
|
|
|
+ return memblock_is_map_memory(addr);
|
|
|
}
|
|
|
EXPORT_SYMBOL(pfn_valid);
|
|
|
#endif
|