diff mbox series

mm/mlock: stop counting mlocked pages when none vma is found

Message ID 20210204110705.17586-1-linmiaohe@huawei.com (mailing list archive)
State New, archived
Headers show
Series mm/mlock: stop counting mlocked pages when none vma is found | expand

Commit Message

Miaohe Lin Feb. 4, 2021, 11:07 a.m. UTC
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.

Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
---
 mm/mlock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Hildenbrand Feb. 5, 2021, 8:14 a.m. UTC | #1
On 04.02.21 12:07, Miaohe Lin wrote:
> 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.

I think this is correct. We will have addr >= vm_end for any VMA, so 
there are no applicable VMAs.

Reviewed-by: David Hildenbrand <david@redhat.com>

> 
> Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
> ---
>   mm/mlock.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/mlock.c b/mm/mlock.c
> index 73960bb3464d..f8f8cc32d03d 100644
> --- a/mm/mlock.c
> +++ b/mm/mlock.c
> @@ -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)
>
diff mbox series

Patch

diff --git a/mm/mlock.c b/mm/mlock.c
index 73960bb3464d..f8f8cc32d03d 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -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)