diff options
author | Kukjin Kim <kgene.kim@samsung.com> | 2014-05-30 13:36:49 -0400 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2014-05-30 13:36:49 -0400 |
commit | fced6dee29f6fb143fe16ea90331176ff77e6120 (patch) | |
tree | 5b6e57e7a757adc2a6518ce291a4d2914397b917 /mm/huge_memory.c | |
parent | bfed1074f213051e94648bfad0d0611a16d81366 (diff) | |
parent | be1f7c8d7e2bc8b8c76846aa6f276e8d2ef8975a (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.c | 13 |
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; |