linux-user: hide reserved mmap in /proc/self/mmap
PATCH 1/1 linux-user: hide reserved mmap in /proc/self/mmap
Hi,
Running 32-bits binaries with address sanitizer (ASAN) instrumentations fails under 64-bits qemu. During initialization ASAN relies on the output from /proc/self/mmap then tries to find a big chunk for shadow memory but it is not happened.
Reserved memory for guest address space is used privately by qemu to satisfy user anonymous mmap calls but in the same time it is not hidden from an application and is reported when a user reads /proc/self/mmap. Qemu is not fully transparent for a guest.
The patch covers the case and cleans up the reserved memory map from the output.
From 167c42e6a9521c05ddd7c6dfbb108d2ae65de098 Mon Sep 17 00:00:00 2001
From: Mikhail Ilyin <[email protected]>
Date: Fri, 18 Jul 2014 10:14:06 +0400
Subject: [PATCH] Clean up the reserved memory map from /proc/self/mmap output which doesn't belong to an emulated process.
--- linux-user/syscall.c | 7 +++++++ 1 file changed, 7 insertions(+)
linux-user/syscall.c +7 -0
@@ -5122,6 +5122,13 @@ static int open_self_maps(void *cpu_env, int fd)continue ; }if (h2g_valid (min) &&h2g_valid (max)) { +#ifdef CONFIG_USE_GUEST_BASE +if (RESERVED_VA ) { +if (mmap_next_start ==h2g (max)) { +continue ; + } + } +#endif dprintf(fd, TARGET_ABI_FMT_lx "-" TARGET_ABI_FMT_lx " %c%c%c%c %08" PRIx64 " %02x:%02x %d %s%s\n", h2g(min), h2g(max), flag_r, flag_w,
Signature · 1 line
1.9.1
Adding Riku Voipio
Quoted 46 lines · Mikhail Ilin
Hi,
Running 32-bits binaries with address sanitizer (ASAN) instrumentations fails under 64-bits qemu. During initialization ASAN relies on the output from
/proc/self/mmapthen tries to find a big chunk for shadow memory but it is not happened.Reserved memory for guest address space is used privately by qemu to satisfy user anonymous mmap calls but in the same time it is not hidden from an application and is reported when a user reads
/proc/self/mmap. Qemu is not fully transparent for a guest.The patch covers the case and cleans up the reserved memory map from the output.
From
167c42e6a9521c05ddd7c6dfbb108d2ae65de098Mon Sep 17 00:00:00 2001
From: Mikhail Ilyin <[email protected]>
Date: Fri, 18 Jul 2014 10:14:06 +0400
Subject: [PATCH] Clean up the reserved memory map from/proc/self/mmapoutput
which doesn't belong to an emulated process.Signed-off-by Mikhail Ilyin <[email protected]>--- linux-user/syscall.c | 7 +++++++ 1 file changed, 7 insertions(+)linux-user/syscall.c +7
-0@@ -5122,6 +5122,13 @@ static int open_self_maps(void *cpu_env, int fd)continue ; }if (h2g_valid (min) &&h2g_valid (max)) { +#ifdef CONFIG_USE_GUEST_BASE +if (RESERVED_VA ) { +if (mmap_next_start ==h2g (max)) { +continue ; + } + } +#endif dprintf(fd, TARGET_ABI_FMT_lx "-" TARGET_ABI_FMT_lx " %c%c%c%c %08" PRIx64 " %02x:%02x %d %s%s\n", h2g(min), h2g(max), flag_r, flag_w,