qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2] linux-user: map at TARGET_UNMAPPED_BASE with res


From: Alexander Graf
Subject: [Qemu-devel] [PATCH v2] linux-user: map at TARGET_UNMAPPED_BASE with reserved_va
Date: Sun, 4 Mar 2012 00:26:09 +0100

When mmap()'ing memory somewhere where it's not allowed, we should not
default to the "next free page" which could be right after brk()'ed memory,
but rather at TARGET_UNMAPPED_BASE, which ensures that brk() can extend its
space later on.

Reported-by: Bernhard M. Wiedemann <address@hidden>
Signed-off-by: Alexander Graf <address@hidden>

---

v1 -> v2:

  - use consistent constant naming

diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index e4db455..2245f40 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -244,7 +244,13 @@ static abi_ulong mmap_find_vma_reserved(abi_ulong start, 
abi_ulong size)
         }
         prot = page_get_flags(addr);
         if (prot) {
-            last_addr = addr + qemu_host_page_size;
+            if (addr < TASK_UNMAPPED_BASE) {
+                /* Someone randomly shot into potential brk space,
+                   better remap higher up when already remapping */
+                last_addr = TASK_UNMAPPED_BASE;
+            } else {
+                last_addr = addr + qemu_host_page_size;
+            }
         }
     }
     mmap_next_start = addr;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]