From: Liam R. Howlett Date: Mon, 5 Jul 2021 19:32:20 +0000 (-0400) Subject: mm/gup: Fix potential sleep issue in __mm_populate X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=6816a63b4cc3e4f401b56cf77d542cbbd60647e3;p=users%2Fjedix%2Flinux-maple.git mm/gup: Fix potential sleep issue in __mm_populate Signed-off-by: Liam R. Howlett --- diff --git a/mm/gup.c b/mm/gup.c index 0f375f6ef0a3..28ade832baf6 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1551,10 +1551,8 @@ int __mm_populate(unsigned long start, unsigned long len, int ignore_errors) struct vm_area_struct *vma = NULL; int locked = 0; long ret = 0; - MA_STATE(mas, &mm->mm_mt, start, start); end = start + len; - for (nstart = start; nstart < end; nstart = nend) { /* * We want to fault in pages for [nstart; end) address range. @@ -1563,9 +1561,9 @@ int __mm_populate(unsigned long start, unsigned long len, int ignore_errors) if (!locked) { locked = 1; mmap_read_lock(mm); - vma = mas_find(&mas, end); + vma = find_vma_intersection(mm, start, end); } else if (nstart >= vma->vm_end) - vma = mas_next(&mas, end); + vma = vma_next(mm, vma); if (!vma) break; /*