aboutsummaryrefslogtreecommitdiffstats
path: root/mm/huge_memory.c
diff options
context:
space:
mode:
authorKukjin Kim <kgene.kim@samsung.com>2014-05-30 13:36:49 -0400
committerKukjin Kim <kgene.kim@samsung.com>2014-05-30 13:36:49 -0400
commitfced6dee29f6fb143fe16ea90331176ff77e6120 (patch)
tree5b6e57e7a757adc2a6518ce291a4d2914397b917 /mm/huge_memory.c
parentbfed1074f213051e94648bfad0d0611a16d81366 (diff)
parentbe1f7c8d7e2bc8b8c76846aa6f276e8d2ef8975a (diff)
Merge branch 'v3.16-next/cleanup-samsung' into v3.16-next/platform-exynos
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r--mm/huge_memory.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 64635f5278ff..b4b1feba6472 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1536,16 +1536,23 @@ pmd_t *page_check_address_pmd(struct page *page,
1536 enum page_check_address_pmd_flag flag, 1536 enum page_check_address_pmd_flag flag,
1537 spinlock_t **ptl) 1537 spinlock_t **ptl)
1538{ 1538{
1539 pgd_t *pgd;
1540 pud_t *pud;
1539 pmd_t *pmd; 1541 pmd_t *pmd;
1540 1542
1541 if (address & ~HPAGE_PMD_MASK) 1543 if (address & ~HPAGE_PMD_MASK)
1542 return NULL; 1544 return NULL;
1543 1545
1544 pmd = mm_find_pmd(mm, address); 1546 pgd = pgd_offset(mm, address);
1545 if (!pmd) 1547 if (!pgd_present(*pgd))
1546 return NULL; 1548 return NULL;
1549 pud = pud_offset(pgd, address);
1550 if (!pud_present(*pud))
1551 return NULL;
1552 pmd = pmd_offset(pud, address);
1553
1547 *ptl = pmd_lock(mm, pmd); 1554 *ptl = pmd_lock(mm, pmd);
1548 if (pmd_none(*pmd)) 1555 if (!pmd_present(*pmd))
1549 goto unlock; 1556 goto unlock;
1550 if (pmd_page(*pmd) != page) 1557 if (pmd_page(*pmd) != page)
1551 goto unlock; 1558 goto unlock;