source: https://gitlab.com/qemu-project/qemu/-/issues/2353 diff --git a/linux-user/mmap.c b/linux-user/mmap.c index be3b9a6..dad29ef 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -559,7 +559,7 @@ static abi_long mmap_h_eq_g(abi_ulong start, abi_ulong len, int host_prot, int flags, int page_flags, int fd, off_t offset) { - void *p, *want_p = g2h_untagged(start); + void *p, *want_p = start ? g2h_untagged(start) : 0; abi_ulong last; p = mmap(want_p, len, host_prot, flags, fd, offset); @@ -609,7 +609,7 @@ static abi_long mmap_h_lt_g(abi_ulong start, abi_ulong len, int host_prot, int mmap_flags, int page_flags, int fd, off_t offset, int host_page_size) { - void *p, *want_p = g2h_untagged(start); + void *p, *want_p = start ? g2h_untagged(start) : 0; off_t fileend_adj = 0; int flags = mmap_flags; abi_ulong last, pass_last; @@ -739,7 +739,7 @@ static abi_long mmap_h_gt_g(abi_ulong start, abi_ulong len, int flags, int page_flags, int fd, off_t offset, int host_page_size) { - void *p, *want_p = g2h_untagged(start); + void *p, *want_p = start ? g2h_untagged(start) : 0; off_t host_offset = offset & -host_page_size; abi_ulong last, real_start, real_last; bool misaligned_offset = false;