Patchwork linux-user: guard mmap_next_start from specific maps

login
register
mail settings
Submitter Alexander Graf
Date March 3, 2012, 11:22 p.m.
Message ID <1330816936-21772-1-git-send-email-agraf@suse.de>
Download mbox | patch
Permalink /patch/144466/
State New
Headers show

Comments

Alexander Graf - March 3, 2012, 11:22 p.m.
If the guest process tells us to map at a specific address, we shouldn't
increase the "last automatic mapping ended here" variable.

This patch brings the reserved_va code in line with the default case.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 linux-user/mmap.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
Paul Brook - March 4, 2012, 12:43 a.m.
> If the guest process tells us to map at a specific address, we shouldn't
> increase the "last automatic mapping ended here" variable.

That sounds reasonable, in fact I'd go further.  Tests on an x86-linux machine 
(both 32-bit and 64-bit userspace) show that if the requested address is not 
available then it is completely ignored.

> +    if (start == mmap_next_start && addr >= TASK_UNMAPPED_BASE) {
> +        mmap_next_start = addr;

Code does not match description.

Paul

Patch

diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index 2245f40..a0c1347 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -253,7 +253,11 @@  static abi_ulong mmap_find_vma_reserved(abi_ulong start, abi_ulong size)
             }
         }
     }
-    mmap_next_start = addr;
+
+    if (start == mmap_next_start && addr >= TASK_UNMAPPED_BASE) {
+        mmap_next_start = addr;
+    }
+
     return last_addr;
 }
 #endif