Skip to content

Commit

Permalink
sched: convert to vma iterator
Browse files Browse the repository at this point in the history
Use the vma iterator so that the iterator can be invalidated or updated to
avoid each caller doing so.

Link: https://lkml.kernel.org/r/20230120162650.984577-23-Liam.Howlett@oracle.com
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  • Loading branch information
howlett authored and akpm00 committed Feb 10, 2023
1 parent 250cb40 commit 214dbc4
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions kernel/sched/fair.c
Original file line number Diff line number Diff line change
Expand Up @@ -2938,11 +2938,11 @@ static void task_numa_work(struct callback_head *work)
struct task_struct *p = current;
struct mm_struct *mm = p->mm;
u64 runtime = p->se.sum_exec_runtime;
MA_STATE(mas, &mm->mm_mt, 0, 0);
struct vm_area_struct *vma;
unsigned long start, end;
unsigned long nr_pte_updates = 0;
long pages, virtpages;
struct vma_iterator vmi;

SCHED_WARN_ON(p != container_of(work, struct task_struct, numa_work));

Expand Down Expand Up @@ -2995,16 +2995,16 @@ static void task_numa_work(struct callback_head *work)

if (!mmap_read_trylock(mm))
return;
mas_set(&mas, start);
vma = mas_find(&mas, ULONG_MAX);
vma_iter_init(&vmi, mm, start);
vma = vma_next(&vmi);
if (!vma) {
reset_ptenuma_scan(p);
start = 0;
mas_set(&mas, start);
vma = mas_find(&mas, ULONG_MAX);
vma_iter_set(&vmi, start);
vma = vma_next(&vmi);
}

for (; vma; vma = mas_find(&mas, ULONG_MAX)) {
do {
if (!vma_migratable(vma) || !vma_policy_mof(vma) ||
is_vm_hugetlb_page(vma) || (vma->vm_flags & VM_MIXEDMAP)) {
continue;
Expand Down Expand Up @@ -3051,7 +3051,7 @@ static void task_numa_work(struct callback_head *work)

cond_resched();
} while (end != vma->vm_end);
}
} for_each_vma(vmi, vma);

out:
/*
Expand Down

0 comments on commit 214dbc4

Please sign in to comment.