On Thu, Jan 25, 2024 at 1:07 PM Ilya Leoshkevich <i...@linux.ibm.com> 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 <i...@linux.ibm.com>
> ---
>  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);
> +    }
> +
>      if (reserved_va) {
>          return mmap_find_vma_reserved(start, size,
>              (alignment != 0 ? 1 << alignment :
>

Reviewed-by: Warner Losh <i...@bsdimp.com>

Seems good to me..  I can queue it to this month's landing code, unless
Richard beats me to it.

Warner

Reply via email to