Message ID | 20210707184313.3697385-3-pcc@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | userfaultfd: do not untag user pointers | expand |
On Wed, Jul 07, 2021 at 11:43:13AM -0700, Peter Collingbourne wrote: > 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. > > Co-developed-by: Lokesh Gidra <lokeshgidra@google.com> > Signed-off-by: Lokesh Gidra <lokeshgidra@google.com> > Signed-off-by: Peter Collingbourne <pcc@google.com> > Fixes: c47174fc362a ("userfaultfd: selftest") > Cc: <stable@vger.kernel.org> # 5.4 > Link: https://linux-review.googlesource.com/id/Icac91064fcd923f77a83e8e133f8631c5b8fc241 Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
On Wed, 7 Jul 2021 11:43:13 -0700 Peter Collingbourne <pcc@google.com> wrote: > 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. Doesn't apply to current mainline. Can you please resync and redo? > Co-developed-by: Lokesh Gidra <lokeshgidra@google.com> > Signed-off-by: Lokesh Gidra <lokeshgidra@google.com> > Signed-off-by: Peter Collingbourne <pcc@google.com> > Fixes: c47174fc362a ("userfaultfd: selftest") > Cc: <stable@vger.kernel.org> # 5.4 This patch then won't apply to earlier kenrels, so please be prepared to help Greg resolve this.
diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c index f5ab5e0312e7..d0f802053dfd 100644 --- a/tools/testing/selftests/vm/userfaultfd.c +++ b/tools/testing/selftests/vm/userfaultfd.c @@ -197,8 +197,10 @@ static int anon_release_pages(char *rel_area) static void anon_allocate_area(void **alloc_area) { - if (posix_memalign(alloc_area, page_size, nr_pages * page_size)) { - fprintf(stderr, "out of memory\n"); + *alloc_area = mmap(NULL, nr_pages * page_size, PROT_READ | PROT_WRITE, + MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + if (*alloc_area == MAP_FAILED) { + fprintf(stderr, "anon memory mmap failed\n"); *alloc_area = NULL; } }