summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--linux-user/mmap.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index 810653c503..1c9faef476 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -724,7 +724,9 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
 
     if (!guest_range_valid(old_addr, old_size) ||
         ((flags & MREMAP_FIXED) &&
-         !guest_range_valid(new_addr, new_size))) {
+         !guest_range_valid(new_addr, new_size)) ||
+        ((flags & MREMAP_MAYMOVE) == 0 &&
+         !guest_range_valid(old_addr, new_size))) {
         errno = ENOMEM;
         return -1;
     }