diff options
author | Alex Shi <alex.shi@linaro.org> | 2017-04-09 12:01:26 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2017-04-09 12:01:26 +0800 |
commit | f75c8ea7d10c66cda333ce8a2400f2bdf07d1523 (patch) | |
tree | 34b7a742084e711d1168301d44809c3d730b87e3 /mm | |
parent | 34263dcbef6a0b9987c93b8f9b05a761309ae816 (diff) | |
parent | af15ae47855e0f0e0172f912ae38d1c50f7fe27f (diff) |
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android
Diffstat (limited to 'mm')
-rw-r--r-- | mm/hugetlb.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index ea11123a9249..7294301d8495 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4362,6 +4362,7 @@ follow_huge_pmd(struct mm_struct *mm, unsigned long address, { struct page *page = NULL; spinlock_t *ptl; + pte_t pte; retry: ptl = pmd_lockptr(mm, pmd); spin_lock(ptl); @@ -4371,12 +4372,13 @@ retry: */ if (!pmd_huge(*pmd)) goto out; - if (pmd_present(*pmd)) { + pte = huge_ptep_get((pte_t *)pmd); + if (pte_present(pte)) { page = pmd_page(*pmd) + ((address & ~PMD_MASK) >> PAGE_SHIFT); if (flags & FOLL_GET) get_page(page); } else { - if (is_hugetlb_entry_migration(huge_ptep_get((pte_t *)pmd))) { + if (is_hugetlb_entry_migration(pte)) { spin_unlock(ptl); __migration_entry_wait(mm, (pte_t *)pmd, ptl); goto retry; |