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

From: Lorenzo Stoakes
Date: Fri Jun 20 2025 - 10:18:34 EST


On Fri, Jun 20, 2025 at 04:16:07PM +0200, Vlastimil Babka wrote:
> 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).

Whoops, I fixed this during development but clearly didn't backport it to the
correct commit, will fix on respin.

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