diff options
Diffstat (limited to 'arch/powerpc/mm/pgtable_64.c')
-rw-r--r-- | arch/powerpc/mm/pgtable_64.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index 63cd81130643..2892246a6fef 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c | |||
@@ -309,16 +309,20 @@ EXPORT_SYMBOL(__iounmap_at); | |||
309 | /* 4 level page table */ | 309 | /* 4 level page table */ |
310 | struct page *pgd_page(pgd_t pgd) | 310 | struct page *pgd_page(pgd_t pgd) |
311 | { | 311 | { |
312 | if (pgd_huge(pgd)) | 312 | if (pgd_is_leaf(pgd)) { |
313 | VM_WARN_ON(!pgd_huge(pgd)); | ||
313 | return pte_page(pgd_pte(pgd)); | 314 | return pte_page(pgd_pte(pgd)); |
315 | } | ||
314 | return virt_to_page(pgd_page_vaddr(pgd)); | 316 | return virt_to_page(pgd_page_vaddr(pgd)); |
315 | } | 317 | } |
316 | #endif | 318 | #endif |
317 | 319 | ||
318 | struct page *pud_page(pud_t pud) | 320 | struct page *pud_page(pud_t pud) |
319 | { | 321 | { |
320 | if (pud_huge(pud)) | 322 | if (pud_is_leaf(pud)) { |
323 | VM_WARN_ON(!pud_huge(pud)); | ||
321 | return pte_page(pud_pte(pud)); | 324 | return pte_page(pud_pte(pud)); |
325 | } | ||
322 | return virt_to_page(pud_page_vaddr(pud)); | 326 | return virt_to_page(pud_page_vaddr(pud)); |
323 | } | 327 | } |
324 | 328 | ||
@@ -328,8 +332,10 @@ struct page *pud_page(pud_t pud) | |||
328 | */ | 332 | */ |
329 | struct page *pmd_page(pmd_t pmd) | 333 | struct page *pmd_page(pmd_t pmd) |
330 | { | 334 | { |
331 | if (pmd_large(pmd) || pmd_huge(pmd) || pmd_devmap(pmd)) | 335 | if (pmd_is_leaf(pmd)) { |
336 | VM_WARN_ON(!(pmd_large(pmd) || pmd_huge(pmd) || pmd_devmap(pmd))); | ||
332 | return pte_page(pmd_pte(pmd)); | 337 | return pte_page(pmd_pte(pmd)); |
338 | } | ||
333 | return virt_to_page(pmd_page_vaddr(pmd)); | 339 | return virt_to_page(pmd_page_vaddr(pmd)); |
334 | } | 340 | } |
335 | 341 | ||