On Wed, 2 Feb 2022 at 02:43, Liam Howlett <liam.howlett@xxxxxxxxxx> wrote: > > From: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx> > > Replace any vm_next use with vma_find(). > > Update free_pgtables(), unmap_vmas(), and zap_page_range() to use the > maple tree. > > Use the new free_pgtables() and unmap_vmas() in do_mas_align_munmap(). > At the same time, alter the loop to be more compact. > > Now that free_pgtables() and unmap_vmas() take a maple tree as an > argument, rearrange do_mas_align_munmap() to use the new tree to hold > the vmas to remove. > > Remove __vma_link_list() and __vma_unlink_list() as they are exclusively > used to update the linked list > > Drop linked list update from __insert_vm_struct(). > > Rework validation of tree as it was depending on the linked list. > > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> > --- > include/linux/mm.h | 5 +- > include/linux/mm_types.h | 4 - > kernel/fork.c | 13 +- > mm/debug.c | 14 +- > mm/gup.c | 2 +- > mm/internal.h | 10 +- > mm/memory.c | 33 ++- > mm/mmap.c | 518 +++++++++++++++++---------------------- > mm/nommu.c | 2 - > mm/util.c | 40 --- > 10 files changed, 264 insertions(+), 377 deletions(-) ... > -static inline int > -unlock_range(struct vm_area_struct *start, struct vm_area_struct **tail, > - unsigned long limit) > -{ > - struct mm_struct *mm = start->vm_mm; > - struct vm_area_struct *tmp = start; > - int count = 0; > - > - while (tmp && tmp->vm_start < limit) { > - *tail = tmp; > - count++; > - if (tmp->vm_flags & VM_LOCKED) { > - mm->locked_vm -= vma_pages(tmp); > - munlock_vma_pages_all(tmp); > - } > - > - tmp = tmp->vm_next; > - } > - > - return count; > -} Trivial: Comment in exit_mmap(), for oom-victim case, has a reference to this removed function (unlock_range()). Cheers, Mark