summaryrefslogtreecommitdiff
path: root/include/asm-sh/pgalloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-sh/pgalloc.h')
-rw-r--r--include/asm-sh/pgalloc.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/include/asm-sh/pgalloc.h b/include/asm-sh/pgalloc.h
index b6753c97397c..9cc5a7dc98ed 100644
--- a/include/asm-sh/pgalloc.h
+++ b/include/asm-sh/pgalloc.h
@@ -105,10 +105,13 @@ static inline pte_t ptep_get_and_clear(pte_t *ptep)
pte_clear(ptep);
if (!pte_not_present(pte)) {
- struct page *page = pte_page(pte);
- if (VALID_PAGE(page)&&
- (!page->mapping || !(page->mapping->i_mmap_shared)))
- __clear_bit(PG_mapped, &page->flags);
+ struct page *page;
+ unsigned long pfn = pte_pfn(pte);
+ if (pfn_valid(pfn)) {
+ page = pfn_to_page(page);
+ if (!page->mapping || !page->mapping->i_mmap_shared)
+ __clear_bit(PG_mapped, &page->flags);
+ }
}
return pte;
}