Passing MAP_FIXED_NOREPLACE to host will fail if the virtual
address space is reserved with mmap. Replace it with MAP_FIXED in such
a case.

Signed-off-by: Akihiko Odaki <[email protected]>
---
 linux-user/mmap.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index a5dfb56545..14cd1b9feb 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -610,6 +610,10 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int 
target_prot,
             goto fail;
         }
 
+        if (reserved_va) {
+            flags = (flags & ~MAP_FIXED_NOREPLACE) | MAP_FIXED;
+        }
+
         /*
          * worst case: we cannot map the file because the offset is not
          * aligned, so we read it
-- 
2.41.0


Reply via email to