Message ID | 20210330060752.592769-3-aneesh.kumar@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Speedup mremap on ppc64 | expand |
On Mon, Mar 29, 2021 at 11:08 PM Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> wrote: > > With a large mmap map size, we can overlap with the text area and using > MAP_FIXED results in unmapping that area. Switch to MAP_FIXED_NOREPLACE > and handle the EEXIST error. > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Reviewed-by: Kalesh Singh <kaleshsingh@google.com> > --- > tools/testing/selftests/vm/mremap_test.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/vm/mremap_test.c b/tools/testing/selftests/vm/mremap_test.c > index c9a5461eb786..0624d1bd71b5 100644 > --- a/tools/testing/selftests/vm/mremap_test.c > +++ b/tools/testing/selftests/vm/mremap_test.c > @@ -75,9 +75,10 @@ static void *get_source_mapping(struct config c) > retry: > addr += c.src_alignment; > src_addr = mmap((void *) addr, c.region_size, PROT_READ | PROT_WRITE, > - MAP_FIXED | MAP_ANONYMOUS | MAP_SHARED, -1, 0); > + MAP_FIXED_NOREPLACE | MAP_ANONYMOUS | MAP_SHARED, > + -1, 0); > if (src_addr == MAP_FAILED) { > - if (errno == EPERM) > + if (errno == EPERM || errno == EEXIST) > goto retry; > goto error; > } > -- > 2.30.2 >
diff --git a/tools/testing/selftests/vm/mremap_test.c b/tools/testing/selftests/vm/mremap_test.c index c9a5461eb786..0624d1bd71b5 100644 --- a/tools/testing/selftests/vm/mremap_test.c +++ b/tools/testing/selftests/vm/mremap_test.c @@ -75,9 +75,10 @@ static void *get_source_mapping(struct config c) retry: addr += c.src_alignment; src_addr = mmap((void *) addr, c.region_size, PROT_READ | PROT_WRITE, - MAP_FIXED | MAP_ANONYMOUS | MAP_SHARED, -1, 0); + MAP_FIXED_NOREPLACE | MAP_ANONYMOUS | MAP_SHARED, + -1, 0); if (src_addr == MAP_FAILED) { - if (errno == EPERM) + if (errno == EPERM || errno == EEXIST) goto retry; goto error; }
With a large mmap map size, we can overlap with the text area and using MAP_FIXED results in unmapping that area. Switch to MAP_FIXED_NOREPLACE and handle the EEXIST error. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> --- tools/testing/selftests/vm/mremap_test.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)