On Fri, 19 Jan 2024 06:14:29 -0700 Nico Pache <npache@xxxxxxxxxx> wrote: > On systems with 64k page size and 512M huge page sizes, the allocation > and test succeeds but errors out at the munmap. As the comment states, > munmap will failure if its not HUGEPAGE aligned. This is due to the > length of the mapping being 1/2 the size of the hugepage causing the > munmap to not be hugepage aligned. Fix this by making the mapping length > the full hugepage if the hugepage is larger than the length of the > mapping. Is Fixes: fa7b9a805c79 ("tools/selftest/vm: allow choosing mem size and page size in map_hugetlb") a suitable Fixes: target for this? > --- a/tools/testing/selftests/mm/map_hugetlb.c > +++ b/tools/testing/selftests/mm/map_hugetlb.c > @@ -15,6 +15,7 @@ > #include <unistd.h> > #include <sys/mman.h> > #include <fcntl.h> > +#include "vm_util.h" > > #define LENGTH (256UL*1024*1024) > #define PROTECTION (PROT_READ | PROT_WRITE) > @@ -58,10 +59,16 @@ int main(int argc, char **argv) > { > void *addr; > int ret; > + size_t hugepage_size; > size_t length = LENGTH; > int flags = FLAGS; > int shift = 0; > > + hugepage_size = default_huge_page_size(); > + /* munmap with fail if the length is not page aligned */ > + if (hugepage_size > length) > + length = hugepage_size; > + > if (argc > 1) > length = atol(argv[1]) << 20; > if (argc > 2) { > -- > 2.43.0