Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> --- kernel/events/uprobes.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index 00b0358739ab3..b0aa05be2a61d 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -356,8 +356,9 @@ static struct vm_area_struct * find_ref_ctr_vma(struct uprobe *uprobe, struct mm_struct *mm) { struct vm_area_struct *tmp; + MA_STATE(mas, &mm->mm_mt, 0, 0); - for (tmp = mm->mmap; tmp; tmp = tmp->vm_next) + mas_for_each(&mas, tmp, ULONG_MAX) if (valid_ref_ctr_vma(uprobe, tmp)) return tmp; @@ -1239,9 +1240,10 @@ static int unapply_uprobe(struct uprobe *uprobe, struct mm_struct *mm) { struct vm_area_struct *vma; int err = 0; + MA_STATE(mas, &mm->mm_mt, 0, 0); mmap_read_lock(mm); - for (vma = mm->mmap; vma; vma = vma->vm_next) { + mas_for_each(&mas, vma, ULONG_MAX) { unsigned long vaddr; loff_t offset; @@ -1990,8 +1992,9 @@ bool uprobe_deny_signal(void) static void mmf_recalc_uprobes(struct mm_struct *mm) { struct vm_area_struct *vma; + MA_STATE(mas, &mm->mm_mt, 0, 0); - for (vma = mm->mmap; vma; vma = vma->vm_next) { + mas_for_each(&mas, vma, ULONG_MAX) { if (!valid_vma(vma, false)) continue; /* -- 2.28.0