aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mm.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mm.h')
-rw-r--r--include/linux/mm.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h
index c1b7414c7bef..a0df4295e171 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1487,9 +1487,15 @@ static inline void pgtable_page_dtor(struct page *page)
1487 1487
1488#if USE_SPLIT_PMD_PTLOCKS 1488#if USE_SPLIT_PMD_PTLOCKS
1489 1489
1490static struct page *pmd_to_page(pmd_t *pmd)
1491{
1492 unsigned long mask = ~(PTRS_PER_PMD * sizeof(pmd_t) - 1);
1493 return virt_to_page((void *)((unsigned long) pmd & mask));
1494}
1495
1490static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd) 1496static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd)
1491{ 1497{
1492 return ptlock_ptr(virt_to_page(pmd)); 1498 return ptlock_ptr(pmd_to_page(pmd));
1493} 1499}
1494 1500
1495static inline bool pgtable_pmd_page_ctor(struct page *page) 1501static inline bool pgtable_pmd_page_ctor(struct page *page)
@@ -1508,7 +1514,7 @@ static inline void pgtable_pmd_page_dtor(struct page *page)
1508 ptlock_free(page); 1514 ptlock_free(page);
1509} 1515}
1510 1516
1511#define pmd_huge_pte(mm, pmd) (virt_to_page(pmd)->pmd_huge_pte) 1517#define pmd_huge_pte(mm, pmd) (pmd_to_page(pmd)->pmd_huge_pte)
1512 1518
1513#else 1519#else
1514 1520