diff options
Diffstat (limited to 'mm/gup.c')
-rw-r--r-- | mm/gup.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -272,8 +272,6 @@ struct page *follow_page_mask(struct vm_area_struct *vma, | |||
272 | return page; | 272 | return page; |
273 | return no_page_table(vma, flags); | 273 | return no_page_table(vma, flags); |
274 | } | 274 | } |
275 | if ((flags & FOLL_NUMA) && pmd_protnone(*pmd)) | ||
276 | return no_page_table(vma, flags); | ||
277 | if (pmd_devmap(*pmd)) { | 275 | if (pmd_devmap(*pmd)) { |
278 | ptl = pmd_lock(mm, pmd); | 276 | ptl = pmd_lock(mm, pmd); |
279 | page = follow_devmap_pmd(vma, address, pmd, flags); | 277 | page = follow_devmap_pmd(vma, address, pmd, flags); |
@@ -284,6 +282,9 @@ struct page *follow_page_mask(struct vm_area_struct *vma, | |||
284 | if (likely(!pmd_trans_huge(*pmd))) | 282 | if (likely(!pmd_trans_huge(*pmd))) |
285 | return follow_page_pte(vma, address, pmd, flags); | 283 | return follow_page_pte(vma, address, pmd, flags); |
286 | 284 | ||
285 | if ((flags & FOLL_NUMA) && pmd_protnone(*pmd)) | ||
286 | return no_page_table(vma, flags); | ||
287 | |||
287 | ptl = pmd_lock(mm, pmd); | 288 | ptl = pmd_lock(mm, pmd); |
288 | if (unlikely(!pmd_trans_huge(*pmd))) { | 289 | if (unlikely(!pmd_trans_huge(*pmd))) { |
289 | spin_unlock(ptl); | 290 | spin_unlock(ptl); |