2023-04-04 09:47:18

by zhangpeng (AS)

[permalink] [raw]
Subject: [PATCH] mm/madvise: Use vma_lookup() instead of find_vma()

From: ZhangPeng <[email protected]>

Using vma_lookup() verifies the address is contained in the found vma.
This results in easier to read the code.

Signed-off-by: ZhangPeng <[email protected]>
---
mm/madvise.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/mm/madvise.c b/mm/madvise.c
index 340125d08c03..405a2c4a0a18 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -852,21 +852,9 @@ static long madvise_dontneed_free(struct vm_area_struct *vma,
*prev = NULL; /* mmap_lock has been dropped, prev is stale */

mmap_read_lock(mm);
- vma = find_vma(mm, start);
+ vma = vma_lookup(mm, start);
if (!vma)
return -ENOMEM;
- if (start < vma->vm_start) {
- /*
- * This "vma" under revalidation is the one
- * with the lowest vma->vm_start where start
- * is also < vma->vm_end. If start <
- * vma->vm_start it means an hole materialized
- * in the user address space within the
- * virtual range passed to MADV_DONTNEED
- * or MADV_FREE.
- */
- return -ENOMEM;
- }
/*
* Potential end adjustment for hugetlb vma is OK as
* the check below keeps end within vma.
--
2.25.1


2023-04-05 17:23:00

by Liam R. Howlett

[permalink] [raw]
Subject: Re: [PATCH] mm/madvise: Use vma_lookup() instead of find_vma()

* Peng Zhang <[email protected]> [230404 05:45]:
> From: ZhangPeng <[email protected]>
>
> Using vma_lookup() verifies the address is contained in the found vma.
> This results in easier to read the code.
>
> Signed-off-by: ZhangPeng <[email protected]>

Reviewed-by: Liam R. Howlett <[email protected]>

> ---
> mm/madvise.c | 14 +-------------
> 1 file changed, 1 insertion(+), 13 deletions(-)
>
> diff --git a/mm/madvise.c b/mm/madvise.c
> index 340125d08c03..405a2c4a0a18 100644
> --- a/mm/madvise.c
> +++ b/mm/madvise.c
> @@ -852,21 +852,9 @@ static long madvise_dontneed_free(struct vm_area_struct *vma,
> *prev = NULL; /* mmap_lock has been dropped, prev is stale */
>
> mmap_read_lock(mm);
> - vma = find_vma(mm, start);
> + vma = vma_lookup(mm, start);
> if (!vma)
> return -ENOMEM;
> - if (start < vma->vm_start) {
> - /*
> - * This "vma" under revalidation is the one
> - * with the lowest vma->vm_start where start
> - * is also < vma->vm_end. If start <
> - * vma->vm_start it means an hole materialized
> - * in the user address space within the
> - * virtual range passed to MADV_DONTNEED
> - * or MADV_FREE.
> - */
> - return -ENOMEM;
> - }
> /*
> * Potential end adjustment for hugetlb vma is OK as
> * the check below keeps end within vma.
> --
> 2.25.1
>
>