--- /dev/null
+From 6c3a6a6f625b58e8dc611cc12bc6015dc8dd5b32 Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mark@klomp.org>
+Date: Thu, 18 Sep 2025 17:16:05 +0200
+Subject: [PATCH] mmap04: Make sure the scanf address format is at least 8 hex
+ chars
+
+The addresses in /proc/self/maps are at least 8 hex chars. Zeros are
+added to the front of the address when shorter (both on 32bit and
+64bit systems).
+
+Under valgrind the mmaps used in kernel/syscalls/mmap/mmap04.c come
+out very low in the address space and might be shorter than 8 hex
+chars. This causes the scanf to fail:
+mmap04.c:62: TBROK: Expected 1 conversions got 0 FILE '/proc/self/maps'
+
+Fix this by using "%08" PRIxPTR when creating the fmt used.
+
+Signed-off-by: Mark Wielaard <mark@klomp.org>
+---
+ testcases/kernel/syscalls/mmap/mmap04.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/testcases/kernel/syscalls/mmap/mmap04.c b/testcases/kernel/syscalls/mmap/mmap04.c
+index 4a050b7b50da..5b28180df29b 100644
+--- a/testcases/kernel/syscalls/mmap/mmap04.c
++++ b/testcases/kernel/syscalls/mmap/mmap04.c
+@@ -58,7 +58,8 @@ static void run(unsigned int i)
+
+ addr2 = SAFE_MMAP(addr1 + pagesize, pagesize, tc->prot, tc->flags | MAP_FIXED, -1, 0);
+
+- sprintf(fmt, "%" PRIxPTR "-%%*x %%s", (uintptr_t)addr2);
++ /* A /proc/self/maps address is at least 8 hex (left zero padded) */
++ sprintf(fmt, "%08" PRIxPTR "-%%*x %%s", (uintptr_t)addr2);
+ SAFE_FILE_LINES_SCANF("/proc/self/maps", fmt, perms);
+
+ if (!strcmp(perms, tc->exp_perms)) {
+--
+2.51.0
+