From: Liam R. Howlett Date: Fri, 18 Dec 2020 18:55:19 +0000 (-0500) Subject: mm/mmap: Fix do_mas_align_munmap() last searching. X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=bafe828f208c7e78e5effadf7bc6cc8df88b27ba;p=users%2Fjedix%2Flinux-maple.git mm/mmap: Fix do_mas_align_munmap() last searching. Probably linked list fallout? Signed-off-by: Liam R. Howlett --- diff --git a/mm/mmap.c b/mm/mmap.c index 1ea06a183c9b..d3c321796ec4 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2373,7 +2373,9 @@ int do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma, last = vma; else { tmp = *mas; - last = mas_next(&tmp, -1); + mas_reset(&tmp); + mas_set(&tmp, end - 1); + last = mas_walk(&tmp); } /* Does it split the last one? */ @@ -2470,7 +2472,8 @@ int do_mas_munmap(struct ma_state *mas, struct mm_struct *mm, if (!vma) return 0; - mas->last = end - 1; +// printk("vma found at %lx %lu\n", vma->vm_start, vma->vm_end); + mas_set_range(mas, start, end - 1); return do_mas_align_munmap(mas, vma, mm, start, end, uf, downgrade); } /* do_munmap() - Wrapper function for non-maple tree aware do_munmap() calls. @@ -2675,6 +2678,7 @@ cannot_expand: mas_set_range(&mas, addr, end - 1); mas_walk(&mas); vma_mas_link(mm, vma, &mas); + /* Once vma denies write, undo our temporary denial count */ if (file) { unmap_writable: