diff options
| author | Bingwu Zhang <xtex@astrafall.org> | 2026-02-28 00:46:30 +0800 |
|---|---|---|
| committer | Michael Tokarev <mjt@tls.msk.ru> | 2026-03-11 16:41:49 +0300 |
| commit | 58c5c5ea2b93f7b284f412547450eecb6155b6ec (patch) | |
| tree | bedbecf972ec5b73c343a11bc0fedf98a2921382 | |
| parent | 42215ee6244cc378ce56a9c1ee7d0889075cc1b2 (diff) | |
| download | qemu-58c5c5ea2b93f7b284f412547450eecb6155b6ec.tar.gz qemu-58c5c5ea2b93f7b284f412547450eecb6155b6ec.zip | |
linux-user: Deal with mmap where start > reserved_va
Fixes: 4c13048e02d9 ("linux-user: Use page_find_range_empty for mmap_find_vma_reserved")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3310
Signed-off-by: Bingwu Zhang <xtex@astrafall.org>
Reviewed-by: Helge Deller <deller@gmx.de>
Signed-off-by: Helge Deller <deller@gmx.de>
(cherry picked from commit f2813e13fe910e01127271a87177a477b9438bc6)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
| -rw-r--r-- | linux-user/mmap.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/linux-user/mmap.c b/linux-user/mmap.c index da5ff46a0f..e49dbaaa20 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -418,12 +418,15 @@ abi_ulong mmap_next_start; static abi_ulong mmap_find_vma_reserved(abi_ulong start, abi_ulong size, abi_ulong align) { - target_ulong ret; + target_ulong ret = -1; - ret = page_find_range_empty(start, reserved_va, size, align); + if (start <= reserved_va) { + ret = page_find_range_empty(start, reserved_va, size, align); + } if (ret == -1 && start > mmap_min_addr) { /* Restart at the beginning of the address space. */ - ret = page_find_range_empty(mmap_min_addr, start - 1, size, align); + ret = page_find_range_empty(mmap_min_addr, MIN(start - 1, reserved_va), + size, align); } return ret; |
