Message ID | 20230717103152.202078-5-ryan.roberts@arm.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 6e16f5133501440699dcca3c5aba367cf6f9c227 |
Headers | show |
Series | selftests/mm fixes for arm64 | expand |
On 17.07.23 12:31, Ryan Roberts wrote: > thuge-gen was previously only munmapping part of the mmapped buffer, > which caused us to run out of 1G huge pages for a later part of the > test. Fix this by munmapping the whole buffer. Based on the code, it > looks like a typo rather than an intention to keep some of the buffer > mapped. > > thuge-gen was also calling mmap with SHM_HUGETLB flag (bit 11 set), > which is actually MAP_DENYWRITE in mmap context. The man page says this > flag is ignored in modern kernels. I'm pretty sure from the context that > the author intended to pass the MAP_HUGETLB flag so I've fixed that up > too. Makes sense to me. > > Signed-off-by: Ryan Roberts <ryan.roberts@arm.com> > --- > tools/testing/selftests/mm/thuge-gen.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/mm/thuge-gen.c b/tools/testing/selftests/mm/thuge-gen.c > index 380ab5f0a534..16ed4dfa7359 100644 > --- a/tools/testing/selftests/mm/thuge-gen.c > +++ b/tools/testing/selftests/mm/thuge-gen.c > @@ -139,7 +139,7 @@ void test_mmap(unsigned long size, unsigned flags) > before, after, before - after, size); > assert(size == getpagesize() || (before - after) == NUM_PAGES); > show(size); > - err = munmap(map, size); > + err = munmap(map, size * NUM_PAGES); > assert(!err); > } > > @@ -222,7 +222,7 @@ int main(void) > test_mmap(ps, MAP_HUGETLB | arg); > } > printf("Testing default huge mmap\n"); > - test_mmap(default_hps, SHM_HUGETLB); > + test_mmap(default_hps, MAP_HUGETLB); > > puts("Testing non-huge shmget"); > test_shmget(getpagesize(), 0); Reviewed-by: David Hildenbrand <david@redhat.com>
diff --git a/tools/testing/selftests/mm/thuge-gen.c b/tools/testing/selftests/mm/thuge-gen.c index 380ab5f0a534..16ed4dfa7359 100644 --- a/tools/testing/selftests/mm/thuge-gen.c +++ b/tools/testing/selftests/mm/thuge-gen.c @@ -139,7 +139,7 @@ void test_mmap(unsigned long size, unsigned flags) before, after, before - after, size); assert(size == getpagesize() || (before - after) == NUM_PAGES); show(size); - err = munmap(map, size); + err = munmap(map, size * NUM_PAGES); assert(!err); } @@ -222,7 +222,7 @@ int main(void) test_mmap(ps, MAP_HUGETLB | arg); } printf("Testing default huge mmap\n"); - test_mmap(default_hps, SHM_HUGETLB); + test_mmap(default_hps, MAP_HUGETLB); puts("Testing non-huge shmget"); test_shmget(getpagesize(), 0);
thuge-gen was previously only munmapping part of the mmapped buffer, which caused us to run out of 1G huge pages for a later part of the test. Fix this by munmapping the whole buffer. Based on the code, it looks like a typo rather than an intention to keep some of the buffer mapped. thuge-gen was also calling mmap with SHM_HUGETLB flag (bit 11 set), which is actually MAP_DENYWRITE in mmap context. The man page says this flag is ignored in modern kernels. I'm pretty sure from the context that the author intended to pass the MAP_HUGETLB flag so I've fixed that up too. Signed-off-by: Ryan Roberts <ryan.roberts@arm.com> --- tools/testing/selftests/mm/thuge-gen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)