On 1/26/24 06:07, Ilya Leoshkevich wrote:
s390x's branch-relative-long test fails with the following error
message on 32-bit hosts:

     qemu-s390x: ../accel/tcg/user-exec.c:493: page_set_flags: Assertion `last 
<= GUEST_ADDR_MAX' failed.

The root cause is that the size passed to mmap() by this test does not
fit into 32 bits and gets truncated. Since there is no chance for such
mmap() to succeed, detect this condition and fail the mmap() right away.

Signed-off-by: Ilya Leoshkevich <[email protected]>
---
  bsd-user/mmap.c   | 4 ++++
  linux-user/mmap.c | 4 ++++
  2 files changed, 8 insertions(+)

diff --git a/bsd-user/mmap.c b/bsd-user/mmap.c
index 3ef11b28079..5dc327d0ad3 100644
--- a/bsd-user/mmap.c
+++ b/bsd-user/mmap.c
@@ -256,6 +256,10 @@ static abi_ulong mmap_find_vma_aligned(abi_ulong start, 
abi_ulong size,
size = HOST_PAGE_ALIGN(size); + if (size != (size_t)size) {
+        return (abi_ulong)(-1);
+    }
+

I have this same fix in

https://lore.kernel.org/qemu-devel/[email protected]/

so as far as that's concerned,

Reviewed-by: Richard Henderson <[email protected]>

But perhaps you got cast your eye across the larger reorg,

https://lore.kernel.org/qemu-devel/[email protected]/

?

r~

Reply via email to