On Mon, Aug 03, 2026 at 04:02:45PM +0200, David Hildenbrand (Arm) wrote:
> On 8/3/26 15:51, Lorenzo Stoakes (ARM) wrote:
> > On Mon, Aug 03, 2026 at 12:57:44PM +0200, David Hildenbrand (Arm) wrote:
> >>> /*
> >>> - * Then at what user virtual address will none of the range be found in
> >>> vma?
> >>> + * At what user virtual address will none of the range be found in vma?
> >>> * Assumes that vma_address() already returned a good starting address.
> >>> */
> >>> static inline unsigned long vma_address_end(struct page_vma_mapped_walk
> >>> *pvmw)
> >>> {
> >>> - struct vm_area_struct *vma = pvmw->vma;
> >>> - pgoff_t pgoff;
> >>> + const struct vm_area_struct *vma = pvmw->vma;
> >>> + const pgoff_t pgoff = pvmw->pgoff;
> >>> + pgoff_t pgoff_vma_start;
> >>> unsigned long address;
> >>> + pgoff_t pgoff_end;
> >>>
> >>> /* Common case, plus ->pgoff is invalid for KSM */
> >>> if (pvmw->nr_pages == 1)
> >>> return pvmw->address + PAGE_SIZE;
> >>>
> >>> - pgoff = pvmw->pgoff + pvmw->nr_pages;
> >>> + pgoff_vma_start = vma_start_pgoff(vma);
> >>> + pgoff_end = pgoff + pvmw->nr_pages;
> >>> address = vma->vm_start +
> >>> - ((pgoff - vma_start_pgoff(vma)) << PAGE_SHIFT);
> >>> + ((pgoff_end - pgoff_vma_start) << PAGE_SHIFT);
> >>> /* Check for address beyond vma (or wrapped through 0?) */
> >>> if (address < vma->vm_start || address > vma->vm_end)
> >>> address = vma->vm_end;
> >>
> >> Am I wrong or are all all changes here completely irrelevant for this
> >> patch?
> >>
> >> You mention
> >>
> >> "This is necessary in order to determine the correct VMA page
> >> offset in vma_address_end() when pvmw->nr_pages > 1."
> >>
> >> But I don't spot an effective change here.
> >
> > As per commit message:
> >
> > This is laying the groundwork for eventually using anonymous page
> > offsets
> > as the index for all anonymous folios.
> >
> > No functional change intended.
> >
> > I cannot enable an effective change here, because if I did I'd break the
> > kernel
> > and introduce a bisection hazard.
>
> You can just throw in a patch that cleans that up and avoids messing with
> confusing pgoff?
You mean do a separate patch for this change?
The existing code is already very confusing :) it becomes worse with the
anon stuff added, hence the change.
I will separate it out assuming this is what you mean?
>
> --
> Cheers,
>
> David
--
Cheers, Lorenzo