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