mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range
Subsystems (2)
PATCH 1/1 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 for next virtual address range at wrong index.
---
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(-)
mm/pagewalk.c +4 -1
@@ -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 ; }
Signature · 10 lines
Shiraz Hashim QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 8 lines · Shiraz Hashim
walk_page_rangesilently skips vma havingVM_PFNMAPset, which leads to undesirable behaviour at client end (who calledwalk_page_range). For example forpagemap_read, when no callbacks are called againstVM_PFNMAPvma,pagemap_readmay prepare pagemap data for next virtual address range at wrong index.Signed-off-by Shiraz Hashim <[email protected]>
Thank you!
Quoted 34 lines
---
The fix is revised, based upon the suggestion here at
http://www.spinics.net/lists/linux-mm/msg83058.htmlmm/pagewalk.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)mm/pagewalk.c +4
-1@@ -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 ; }Signature · 10 lines
Shiraz Hashim QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Andrew Morton
maintainerQuoted 6 lines · On Wed, 21 Jan 2015 11:43:13 +0530 Shiraz Hashim <[email protected]> wrote:
walk_page_rangesilently skips vma havingVM_PFNMAPset, which leads to undesirable behaviour at client end (who calledwalk_page_range). For example forpagemap_read, when no callbacks are called againstVM_PFNMAPvma,pagemap_readmay prepare pagemap data for next virtual address range at wrong index.
This changelog doesn't have enough information for me to be able to work out whether a -stable backport is needed. Please always describe the user-visible effects of a bug.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>