From 44ad70f1f09625f2f093e2b005c9fdcebf51f59c Mon Sep 17 00:00:00 2001 From: Shiraz Hashim Date: Thu, 8 Jan 2015 11:50:03 +0530 Subject: [PATCH] mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range walk_page_range silently skips vma having VM_PFNMAP set, which leads to undesirable behaviour at client end (who called walk_page_range). For example for pagemap_read, when no callbacks are called against VM_PFNMAP vma, pagemap_read may prepare pagemap data at wrong index. Change-Id: I057b5c8ede1ae4bb9e3f8639e10bd4fcbf23da7e Signed-off-by: Shiraz Hashim --- mm/pagewalk.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/pagewalk.c b/mm/pagewalk.c index 2beeabf502c5..9056d22d2880 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c @@ -199,7 +199,10 @@ int walk_page_range(unsigned long addr, unsigned long end, */ if ((vma->vm_start <= addr) && (vma->vm_flags & VM_PFNMAP)) { - next = vma->vm_end; + if (walk->pte_hole) + err = walk->pte_hole(addr, next, walk); + if (err) + break; pgd = pgd_offset(walk->mm, next); continue; }