Message ID | 20240821035005.4423-1-11162571@vivo.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v1] tools:mm:Check mmap based on return values | expand |
On 8/20/24 21:50, Yang Ruibin wrote: > To correctly detect whether mmap is successful, must use if > (map_ptr == MAP_FAILED)to avoid incorrectly handling a valid mapping. Add "Fix mmap() error paths to check for MAP_FAILED" at the end of the changelog Change short log to say "selftests:mm: Fix mmap() error paths to check for MAP_FAILED" selftests is the right subsystem tag for this change. "Fix" in the short log will make it easier for this change to be picked up by stables. > > Signed-off-by: Yang Ruibin <11162571@vivo.com> > --- > tools/testing/selftests/mm/ksm_tests.c | 2 +- > tools/testing/selftests/mm/madv_populate.c | 2 +- > tools/testing/selftests/mm/soft-dirty.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/mm/ksm_tests.c b/tools/testing/selftests/mm/ksm_tests.c > index b748c48908d9..dad54840f32e 100644 > --- a/tools/testing/selftests/mm/ksm_tests.c > +++ b/tools/testing/selftests/mm/ksm_tests.c > @@ -201,7 +201,7 @@ static void *allocate_memory(void *ptr, int prot, int mapping, char data, size_ > { > void *map_ptr = mmap(ptr, map_size, PROT_WRITE, mapping, -1, 0); > > - if (!map_ptr) { > + if (map_ptr == MAP_FAILED) { > perror("mmap"); Use ksft_exit_fail_msg("mmap failed\n") to be consistent with the rest. > return NULL; > } > diff --git a/tools/testing/selftests/mm/madv_populate.c b/tools/testing/selftests/mm/madv_populate.c > index ef7d911da13e..b89cb83ca5c5 100644 > --- a/tools/testing/selftests/mm/madv_populate.c > +++ b/tools/testing/selftests/mm/madv_populate.c > @@ -34,7 +34,7 @@ static void sense_support(void) > > addr = mmap(0, pagesize, PROT_READ | PROT_WRITE, > MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); > - if (!addr) > + if (addr == MAP_FAILED) > ksft_exit_fail_msg("mmap failed\n"); > > ret = madvise(addr, pagesize, MADV_POPULATE_READ); > diff --git a/tools/testing/selftests/mm/soft-dirty.c b/tools/testing/selftests/mm/soft-dirty.c > index bdfa5d085f00..4ccbc053bcce 100644 > --- a/tools/testing/selftests/mm/soft-dirty.c > +++ b/tools/testing/selftests/mm/soft-dirty.c > @@ -134,7 +134,7 @@ static void test_mprotect(int pagemap_fd, int pagesize, bool anon) > if (anon) { > map = mmap(NULL, pagesize, PROT_READ|PROT_WRITE, > MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); > - if (!map) > + if (map == MAP_FAILED) > ksft_exit_fail_msg("anon mmap failed\n"); > } else { > test_fd = open(fname, O_RDWR | O_CREAT, 0664); With the above fixed: Reviewed-by: Shuah Khan <skhan@linuxfoundation.org> thanks, -- Shuah
diff --git a/tools/testing/selftests/mm/ksm_tests.c b/tools/testing/selftests/mm/ksm_tests.c index b748c48908d9..dad54840f32e 100644 --- a/tools/testing/selftests/mm/ksm_tests.c +++ b/tools/testing/selftests/mm/ksm_tests.c @@ -201,7 +201,7 @@ static void *allocate_memory(void *ptr, int prot, int mapping, char data, size_ { void *map_ptr = mmap(ptr, map_size, PROT_WRITE, mapping, -1, 0); - if (!map_ptr) { + if (map_ptr == MAP_FAILED) { perror("mmap"); return NULL; } diff --git a/tools/testing/selftests/mm/madv_populate.c b/tools/testing/selftests/mm/madv_populate.c index ef7d911da13e..b89cb83ca5c5 100644 --- a/tools/testing/selftests/mm/madv_populate.c +++ b/tools/testing/selftests/mm/madv_populate.c @@ -34,7 +34,7 @@ static void sense_support(void) addr = mmap(0, pagesize, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); - if (!addr) + if (addr == MAP_FAILED) ksft_exit_fail_msg("mmap failed\n"); ret = madvise(addr, pagesize, MADV_POPULATE_READ); diff --git a/tools/testing/selftests/mm/soft-dirty.c b/tools/testing/selftests/mm/soft-dirty.c index bdfa5d085f00..4ccbc053bcce 100644 --- a/tools/testing/selftests/mm/soft-dirty.c +++ b/tools/testing/selftests/mm/soft-dirty.c @@ -134,7 +134,7 @@ static void test_mprotect(int pagemap_fd, int pagesize, bool anon) if (anon) { map = mmap(NULL, pagesize, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); - if (!map) + if (map == MAP_FAILED) ksft_exit_fail_msg("anon mmap failed\n"); } else { test_fd = open(fname, O_RDWR | O_CREAT, 0664);
To correctly detect whether mmap is successful, must use if (map_ptr == MAP_FAILED)to avoid incorrectly handling a valid mapping. Signed-off-by: Yang Ruibin <11162571@vivo.com> --- tools/testing/selftests/mm/ksm_tests.c | 2 +- tools/testing/selftests/mm/madv_populate.c | 2 +- tools/testing/selftests/mm/soft-dirty.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)