diff options
| author | Bingwu Zhang <xtex@astrafall.org> | 2026-02-28 00:46:31 +0800 |
|---|---|---|
| committer | Michael Tokarev <mjt@tls.msk.ru> | 2026-03-11 16:41:49 +0300 |
| commit | 99dbd039e0dc4c0ecd55996a8bb7f4d638f53f52 (patch) | |
| tree | 38febb0feb43780a5c9d803f16bad395d9ca03f1 | |
| parent | 58c5c5ea2b93f7b284f412547450eecb6155b6ec (diff) | |
| download | qemu-99dbd039e0dc4c0ecd55996a8bb7f4d638f53f52.tar.gz qemu-99dbd039e0dc4c0ecd55996a8bb7f4d638f53f52.zip | |
bsd-user: Deal with mmap where start > reserved_va
Fixes: f12294b5bd21 ("bsd-user: Use page_find_range_empty for mmap_find_vma_reserved")
Signed-off-by: Bingwu Zhang <xtex@astrafall.org>
Reviewed-by: Helge Deller <deller@gmx.de>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Signed-off-by: Helge Deller <deller@gmx.de>
(cherry picked from commit e8e7d1f97785be2fd81fc520e0c7b9d228c10a56)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
| -rw-r--r-- | bsd-user/mmap.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/bsd-user/mmap.c b/bsd-user/mmap.c index 47e317517c..3cb8057ca1 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); } |
