Skip to content

Commit 1077e2b

Browse files
pccgregkh
authored andcommitted
selftest: use mmap instead of posix_memalign to allocate memory
commit 0db282b upstream. This test passes pointers obtained from anon_allocate_area to the userfaultfd and mremap APIs. This causes a problem if the system allocator returns tagged pointers because with the tagged address ABI the kernel rejects tagged addresses passed to these APIs, which would end up causing the test to fail. To make this test compatible with such system allocators, stop using the system allocator to allocate memory in anon_allocate_area, and instead just use mmap. Link: https://lkml.kernel.org/r/[email protected] Link: https://linux-review.googlesource.com/id/Icac91064fcd923f77a83e8e133f8631c5b8fc241 Fixes: c47174f ("userfaultfd: selftest") Co-developed-by: Lokesh Gidra <[email protected]> Signed-off-by: Lokesh Gidra <[email protected]> Signed-off-by: Peter Collingbourne <[email protected]> Reviewed-by: Catalin Marinas <[email protected]> Cc: Vincenzo Frascino <[email protected]> Cc: Dave Martin <[email protected]> Cc: Will Deacon <[email protected]> Cc: Andrea Arcangeli <[email protected]> Cc: Alistair Delva <[email protected]> Cc: William McVicker <[email protected]> Cc: Evgenii Stepanov <[email protected]> Cc: Mitch Phillips <[email protected]> Cc: Andrey Konovalov <[email protected]> Cc: <[email protected]> [5.4] Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 6e81e2c commit 1077e2b

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

tools/testing/selftests/vm/userfaultfd.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,10 @@ static int anon_release_pages(char *rel_area)
180180

181181
static void anon_allocate_area(void **alloc_area)
182182
{
183-
if (posix_memalign(alloc_area, page_size, nr_pages * page_size)) {
184-
fprintf(stderr, "out of memory\n");
183+
*alloc_area = mmap(NULL, nr_pages * page_size, PROT_READ | PROT_WRITE,
184+
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
185+
if (*alloc_area == MAP_FAILED)
186+
fprintf(stderr, "mmap of anonymous memory failed");
185187
*alloc_area = NULL;
186188
}
187189
}

0 commit comments

Comments
 (0)