Messages in this thread Patch in this message | | | From | Shiraz Hashim <> | Subject | [PATCH] mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range | Date | Wed, 21 Jan 2015 11:43:13 +0530 |
| |
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 for next virtual address range at wrong index.
Signed-off-by: Shiraz Hashim <shashim@codeaurora.org> --- The fix is revised, based upon the suggestion here at http://www.spinics.net/lists/linux-mm/msg83058.html
mm/pagewalk.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/mm/pagewalk.c b/mm/pagewalk.c index ad83195..b264bda 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; } -- Shiraz Hashim QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation
| |