]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/oom_kill: Use maple tree iterators instead of vma linked list
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Mon, 4 Jan 2021 20:06:25 +0000 (15:06 -0500)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 2 Sep 2021 15:26:35 +0000 (11:26 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
mm/oom_kill.c

index 431d38c3bba8ef35861e21f43e471c22bc753576..40a01f3347355dec03cb9ea04df87bf5b0b94ea1 100644 (file)
@@ -519,6 +519,7 @@ bool __oom_reap_task_mm(struct mm_struct *mm)
 {
        struct vm_area_struct *vma;
        bool ret = true;
+       MA_STATE(mas, &mm->mm_mt, 0, 0);
 
        /*
         * Tell all users of get_user/copy_from_user etc... that the content
@@ -528,7 +529,8 @@ bool __oom_reap_task_mm(struct mm_struct *mm)
         */
        set_bit(MMF_UNSTABLE, &mm->flags);
 
-       for (vma = mm->mmap ; vma; vma = vma->vm_next) {
+       rcu_read_lock();
+       mas_for_each(&mas, vma, ULONG_MAX) {
                if (!can_madv_lru_vma(vma))
                        continue;
 
@@ -560,6 +562,7 @@ bool __oom_reap_task_mm(struct mm_struct *mm)
                        tlb_finish_mmu(&tlb);
                }
        }
+       rcu_read_unlock();
 
        return ret;
 }