aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc/task_mmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/proc/task_mmu.c')
-rw-r--r--fs/proc/task_mmu.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 60b914860f81..78fd3621f565 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -343,6 +343,8 @@ static int smaps_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
343 struct page *page; 343 struct page *page;
344 int mapcount; 344 int mapcount;
345 345
346 split_huge_page_pmd(walk->mm, pmd);
347
346 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); 348 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
347 for (; addr != end; pte++, addr += PAGE_SIZE) { 349 for (; addr != end; pte++, addr += PAGE_SIZE) {
348 ptent = *pte; 350 ptent = *pte;
@@ -467,6 +469,8 @@ static int clear_refs_pte_range(pmd_t *pmd, unsigned long addr,
467 spinlock_t *ptl; 469 spinlock_t *ptl;
468 struct page *page; 470 struct page *page;
469 471
472 split_huge_page_pmd(walk->mm, pmd);
473
470 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); 474 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
471 for (; addr != end; pte++, addr += PAGE_SIZE) { 475 for (; addr != end; pte++, addr += PAGE_SIZE) {
472 ptent = *pte; 476 ptent = *pte;
@@ -623,6 +627,8 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
623 pte_t *pte; 627 pte_t *pte;
624 int err = 0; 628 int err = 0;
625 629
630 split_huge_page_pmd(walk->mm, pmd);
631
626 /* find the first VMA at or above 'addr' */ 632 /* find the first VMA at or above 'addr' */
627 vma = find_vma(walk->mm, addr); 633 vma = find_vma(walk->mm, addr);
628 for (; addr != end; addr += PAGE_SIZE) { 634 for (; addr != end; addr += PAGE_SIZE) {