linux-user: Preserve NULL hit in target_mmap subroutines
-----BEGIN PGP SIGNATURE----- iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAma9VDodHHJpY2hhcmQu aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/d+Af7B51RZ0KQGrOO/psY UQZBYOa7WDLuv3cRdhPhXsRxs4bQtc4suF+2mrKQ5ODS6gh2SRJqMFqmlNvzF1QP k0D7qia3pfzsQ2YZjWq0ccZC0WSEbvABConulNydZR2tSORLXZSPmj8h0bWQjDnO fGVY0I1DdRCWjpfcy12PDo7F+uNKYacQUcrkPl9XvBJe8Ev9vCWqgGMU/rINKFSF +Z3YNpcF8tqeGvp72/Kr20XHtlX7XGz4OLgsBjnG897UVRV1UMdIRP7fd7Y9BJaZ YgCAjfJrgEWvUd5ICQvkX03xOfZ1Nx3iRS7rIgPJxdN0svgzPGQyrqi9O9TUsFWD 0eJdeQ== =nOnV -----END PGP SIGNATURE----- Merge tag 'pull-lu-20240815' of https://gitlab.com/rth7680/qemu into staging linux-user: Preserve NULL hit in target_mmap subroutines # -----BEGIN PGP SIGNATURE----- # # iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAma9VDodHHJpY2hhcmQu # aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/d+Af7B51RZ0KQGrOO/psY # UQZBYOa7WDLuv3cRdhPhXsRxs4bQtc4suF+2mrKQ5ODS6gh2SRJqMFqmlNvzF1QP # k0D7qia3pfzsQ2YZjWq0ccZC0WSEbvABConulNydZR2tSORLXZSPmj8h0bWQjDnO # fGVY0I1DdRCWjpfcy12PDo7F+uNKYacQUcrkPl9XvBJe8Ev9vCWqgGMU/rINKFSF # +Z3YNpcF8tqeGvp72/Kr20XHtlX7XGz4OLgsBjnG897UVRV1UMdIRP7fd7Y9BJaZ # YgCAjfJrgEWvUd5ICQvkX03xOfZ1Nx3iRS7rIgPJxdN0svgzPGQyrqi9O9TUsFWD # 0eJdeQ== # =nOnV # -----END PGP SIGNATURE----- # gpg: Signature made Thu 15 Aug 2024 11:04:58 AM AEST # gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F # gpg: issuer "richard.henderson@linaro.org" # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [ultimate] * tag 'pull-lu-20240815' of https://gitlab.com/rth7680/qemu: linux-user: Preserve NULL hit in target_mmap subroutines Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
1bbb991a27
@ -560,9 +560,13 @@ 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 = NULL;
|
||||
abi_ulong last;
|
||||
|
||||
if (start || (flags & (MAP_FIXED | MAP_FIXED_NOREPLACE))) {
|
||||
want_p = g2h_untagged(start);
|
||||
}
|
||||
|
||||
p = mmap(want_p, len, host_prot, flags, fd, offset);
|
||||
if (p == MAP_FAILED) {
|
||||
return -1;
|
||||
@ -610,11 +614,15 @@ 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 = NULL;
|
||||
off_t fileend_adj = 0;
|
||||
int flags = mmap_flags;
|
||||
abi_ulong last, pass_last;
|
||||
|
||||
if (start || (flags & (MAP_FIXED | MAP_FIXED_NOREPLACE))) {
|
||||
want_p = g2h_untagged(start);
|
||||
}
|
||||
|
||||
if (!(flags & MAP_ANONYMOUS)) {
|
||||
struct stat sb;
|
||||
|
||||
@ -740,12 +748,16 @@ 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 = NULL;
|
||||
off_t host_offset = offset & -host_page_size;
|
||||
abi_ulong last, real_start, real_last;
|
||||
bool misaligned_offset = false;
|
||||
size_t host_len;
|
||||
|
||||
if (start || (flags & (MAP_FIXED | MAP_FIXED_NOREPLACE))) {
|
||||
want_p = g2h_untagged(start);
|
||||
}
|
||||
|
||||
if (!(flags & (MAP_FIXED | MAP_FIXED_NOREPLACE))) {
|
||||
/*
|
||||
* Adjust the offset to something representable on the host.
|
||||
|
Loading…
Reference in New Issue
Block a user