[PATCH 63/94] fs/coredump: Use maple tree iterators in place of linked list

From: Liam Howlett
Date: Wed Apr 28 2021 - 11:40:41 EST


Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
---
fs/coredump.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/fs/coredump.c b/fs/coredump.c
index 2868e3e171ae..b7f42e81d84d 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@ -1056,10 +1056,10 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
return vma->vm_end - vma->vm_start;
}

-static struct vm_area_struct *first_vma(struct task_struct *tsk,
+static struct vm_area_struct *first_vma(struct mm_struct *mm,
struct vm_area_struct *gate_vma)
{
- struct vm_area_struct *ret = tsk->mm->mmap;
+ struct vm_area_struct *ret = find_vma(mm, 0);

if (ret)
return ret;
@@ -1070,12 +1070,13 @@ static struct vm_area_struct *first_vma(struct task_struct *tsk,
* Helper function for iterating across a vma list. It ensures that the caller
* will visit `gate_vma' prior to terminating the search.
*/
-static struct vm_area_struct *next_vma(struct vm_area_struct *this_vma,
+static struct vm_area_struct *next_vma(struct mm_struct *mm,
+ struct vm_area_struct *this_vma,
struct vm_area_struct *gate_vma)
{
struct vm_area_struct *ret;

- ret = this_vma->vm_next;
+ ret = vma_next(mm, this_vma);
if (ret)
return ret;
if (this_vma == gate_vma)
@@ -1113,8 +1114,8 @@ int dump_vma_snapshot(struct coredump_params *cprm, int *vma_count,
return -ENOMEM;
}

- for (i = 0, vma = first_vma(current, gate_vma); vma != NULL;
- vma = next_vma(vma, gate_vma), i++) {
+ for (i = 0, vma = first_vma(mm, gate_vma); vma != NULL;
+ vma = next_vma(mm, vma, gate_vma), i++) {
struct core_vma_metadata *m = (*vma_meta) + i;

m->start = vma->vm_start;
--
2.30.2