diff --git a/bsd-user/mmap.c b/bsd-user/mmap.c index 24ba1728eb..fe77eceb48 100644 --- a/bsd-user/mmap.c +++ b/bsd-user/mmap.c @@ -258,12 +258,14 @@ abi_ulong mmap_next_start = TASK_UNMAPPED_BASE; static abi_ulong mmap_find_vma_reserved(abi_ulong start, abi_ulong size, abi_ulong alignment) { - abi_ulong ret; + abi_ulong ret = -1; - ret = page_find_range_empty(start, reserved_va, size, alignment); + if (start <= reserved_va) { + ret = page_find_range_empty(start, reserved_va, size, alignment); + } if (ret == -1 && start > TARGET_PAGE_SIZE) { /* Restart at the beginning of the address space. */ - ret = page_find_range_empty(TARGET_PAGE_SIZE, start - 1, + ret = page_find_range_empty(TARGET_PAGE_SIZE, MIN(start - 1, reserved_va), size, alignment); }