From: Chen Gang <cheng...@emindsoft.com.cn>

In this case, real_end is larger than end, which may cause mmap_frag
process the incorrect memory region.

Signed-off-by: Chen Gang <gang.chen.5...@gmail.com>
---
 linux-user/mmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index 7b459d5..57b0361 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -536,7 +536,7 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int 
prot,
         /* handle the end of the mapping */
         if (end < real_end) {
             ret = mmap_frag(real_end - qemu_host_page_size,
-                            real_end - qemu_host_page_size, real_end,
+                            real_end - qemu_host_page_size, end,
                             prot, flags, fd,
                             offset + real_end - qemu_host_page_size - start);
             if (ret == -1)
-- 
1.9.1


Reply via email to