Re: [PATCH 4/5] mm/madvise: thread all madvise state through madv_behavior

From: Vlastimil Babka
Date: Fri Jun 20 2025 - 10:16:25 EST


On 6/19/25 22:26, Lorenzo Stoakes wrote:
> @@ -1662,13 +1668,16 @@ int madvise_walk_vmas(struct madvise_behavior *madv_behavior)
> range->end = min(vma->vm_end, end);
>
> /* Here vma->vm_start <= range->start < range->end <= (end|vma->vm_end). */
> - error = madvise_vma_behavior(vma, &prev, madv_behavior);
> + madv_behavior->vma = vma;
> + error = madvise_vma_behavior(madv_behavior);
> if (error)
> return error;
> + prev = madv_behavior->prev;
> +
> range->start = range->end;
> if (prev && range->start < prev->vm_end)
> range->start = prev->vm_end;
> - if (range->start >= range->end)
> + if (range->start >= end)

I believe this change is fixing a bug from patch 3/5 (which I didn't catch,
sigh).

> break;
> if (prev)
> vma = find_vma(mm, prev->vm_end);