Re: [PATCH v4 16/20] tools/testing/selftests/mm: test anonymous page offset merge behaviour

From: Lorenzo Stoakes (ARM)

Date: Tue Aug 11 2026 - 13:57:04 EST


On Tue, Aug 11, 2026 at 06:56:18PM +0200, David Hildenbrand (Arm) wrote:
> On 8/6/26 22:21, Lorenzo Stoakes (ARM) wrote:
> > While maintaining anonymous page offsets for VMAs has no impact for most
> > merge cases, it does impact MAP_PRIVATE-mapped file-backed mappings which
> > happen to have matching page offset but not matching anonymous page offset.
> >
> > Assert this behaviour by attempting to map an unfaulted MAP_PRIVATE-memfd
> > region with a faulted one with compatible file page offsets but
> > incompatible anonymous page offsets.
> >
> > Signed-off-by: Lorenzo Stoakes (ARM) <ljs@xxxxxxxxxx>
> > ---
> > tools/testing/selftests/mm/merge.c | 57 ++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 57 insertions(+)
> >
> > diff --git a/tools/testing/selftests/mm/merge.c b/tools/testing/selftests/mm/merge.c
> > index 519e5ac02db7..cb7cdb6b7ada 100644
> > --- a/tools/testing/selftests/mm/merge.c
> > +++ b/tools/testing/selftests/mm/merge.c
> > @@ -1305,6 +1305,63 @@ TEST_F(merge, merge_vmas_with_mseal)
> > ASSERT_EQ(procmap->query.vma_end, (unsigned long)ptr + 2 * page_size);
> > }
> >
> > +TEST_F(merge, anon_and_page_offset_mismatch_memfd)
> > +{
> > + struct procmap_fd *procmap = &self->procmap;
> > + unsigned int page_size = self->page_size;
> > + char *carveout = self->carveout;
> > + char *ptr, *ptr2;
> > + int fd;
> > +
> > + /* Create a 10 page memfd descriptor. */
> > + fd = memfd_create("anon_page_offset_test", MFD_CLOEXEC);
> > + ASSERT_NE(fd, -1);
> > + ASSERT_EQ(ftruncate(fd, 10 * page_size), 0);
> > +
> > + /* Map a region using the memfd at page offset 0. */
> > + ptr = mmap(carveout, 5 * page_size, PROT_READ | PROT_WRITE,
> > + MAP_FIXED | MAP_PRIVATE, fd, 0);
> > + ASSERT_NE(ptr, MAP_FAILED);
> > +
> > + /*
> > + * Map another separately, and fault in, at page offset 5:
> > + *
>
> "Fault in" is imprecise, as a read-fault won't do. "Trigger a CoW fault." might
> be better.

Andrew - could you fix up? Thanks :)

>
>
> Acked-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>

Thanks!

>
> --
> Cheers,
>
> David

--
Cheers, Lorenzo