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/Icac91064fcd923f77a83e8e133f8631c5b... --- tools/testing/selftests/vm/userfaultfd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
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; } }
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/Icac91064fcd923f77a83e8e133f8631c5b...
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.
linux-stable-mirror@lists.linaro.org