aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/memremap.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/memremap.c b/kernel/memremap.c
index 60baf4d3401e..6cf54615a9c4 100644
--- a/kernel/memremap.c
+++ b/kernel/memremap.c
@@ -29,10 +29,10 @@ __weak void __iomem *ioremap_cache(resource_size_t offset, unsigned long size)
29 29
30static void *try_ram_remap(resource_size_t offset, size_t size) 30static void *try_ram_remap(resource_size_t offset, size_t size)
31{ 31{
32 struct page *page = pfn_to_page(offset >> PAGE_SHIFT); 32 unsigned long pfn = PHYS_PFN(offset);
33 33
34 /* In the simple case just return the existing linear address */ 34 /* In the simple case just return the existing linear address */
35 if (!PageHighMem(page)) 35 if (pfn_valid(pfn) && !PageHighMem(pfn_to_page(pfn)))
36 return __va(offset); 36 return __va(offset);
37 return NULL; /* fallback to ioremap_cache */ 37 return NULL; /* fallback to ioremap_cache */
38} 38}