diff options
Diffstat (limited to 'include/linux/mm.h')
-rw-r--r-- | include/linux/mm.h | 10 |
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 | ||
1490 | static 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 | |||
1490 | static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd) | 1496 | static 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 | ||
1495 | static inline bool pgtable_pmd_page_ctor(struct page *page) | 1501 | static 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 | ||