mm/mlock: stop counting mlocked pages when none vma is found
authorMiaohe Lin <linmiaohe@huawei.com>
Fri, 26 Feb 2021 01:17:49 +0000 (17:17 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Feb 2021 17:41:01 +0000 (09:41 -0800)
There will be no vma satisfies addr < vm_end when find_vma() returns NULL.
Thus it's meaningless to traverse the vma list below because we can't
find any vma to count mlocked pages.  Stop counting mlocked pages in this
case to save some vma list traversal cycles.

Link: https://lkml.kernel.org/r/20210204110705.17586-1-linmiaohe@huawei.com
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/mlock.c

index 73960bb3464d00d91347f1f9696d29363aef0f5e..f8f8cc32d03d0b31c2dbcffb87f0c3c680eef09a 100644 (file)
@@ -622,7 +622,7 @@ static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm,
 
        vma = find_vma(mm, start);
        if (vma == NULL)
-               vma = mm->mmap;
+               return 0;
 
        for (; vma ; vma = vma->vm_next) {
                if (start >= vma->vm_end)