Re: [PATCH V2] selftests/vm: Add tests to validate mirror functionality with mremap
From: Michal Hocko
Date: Wed Jul 26 2017 - 01:49:46 EST
On Wed 26-07-17 09:54:26, Anshuman Khandual wrote:
> On 07/25/2017 07:06 PM, Michal Hocko wrote:
> > On Tue 25-07-17 12:06:57, Anshuman Khandual wrote:
> > [...]
> >> diff --git a/tools/testing/selftests/vm/mremap_mirror_private_anon.c b/tools/testing/selftests/vm/mremap_mirror_private_anon.c
> > [...]
> >> + ptr = mmap(NULL, alloc_size, PROT_READ | PROT_WRITE,
> >> + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
> >> + if (ptr == MAP_FAILED) {
> >> + perror("map() failed");
> >> + return -1;
> >> + }
> >> + memset(ptr, PATTERN, alloc_size);
> >> +
> >> + mirror_ptr = (char *) mremap(ptr, 0, alloc_size, MREMAP_MAYMOVE);
> >> + if (mirror_ptr == MAP_FAILED) {
> >> + perror("mremap() failed");
> >> + return -1;
> >> + }
> >
> > What is the point of this test? It will break with Mike's patch very
> > soon. Btw. it never worked.
>
> It works now. The new 'mirrored' buffer does not have same elements
> as that of the original one.
So what exactly are you testing here? The current implementation or the
semantic of mremap. Because having a different content after mremap
doesn't make _any_ sense to me. I might be misreading the intention of
the syscall but to me it sounds like the content should be same as the
original one... If my reading is wrong then -EINVAL for anon mremaps is
simply wrong.
--
Michal Hocko
SUSE Labs