Skip to content

Commit

Permalink
linux-user: Split out do_munmap
Browse files Browse the repository at this point in the history
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
  • Loading branch information
rth7680 committed Feb 29, 2024
1 parent ad87d26 commit 2952b64
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions linux-user/mmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,21 @@ int target_mprotect(abi_ulong start, abi_ulong len, int target_prot)
return ret;
}

/*
* Perform munmap on behalf of the target, with host parameters.
* If reserved_va, we must replace the memory reservation.
*/
static int do_munmap(void *addr, size_t len)
{
if (reserved_va) {
void *ptr = mmap(addr, len, PROT_NONE,
MAP_FIXED | MAP_ANONYMOUS
| MAP_PRIVATE | MAP_NORESERVE, -1, 0);
return ptr == addr ? 0 : -1;
}
return munmap(addr, len);
}

/* map an incomplete host page */
static bool mmap_frag(abi_ulong real_start, abi_ulong start, abi_ulong last,
int prot, int flags, int fd, off_t offset)
Expand Down Expand Up @@ -854,13 +869,7 @@ static int mmap_reserve_or_unmap(abi_ulong start, abi_ulong len)
real_len = real_last - real_start + 1;
host_start = g2h_untagged(real_start);

if (reserved_va) {
void *ptr = mmap(host_start, real_len, PROT_NONE,
MAP_FIXED | MAP_ANONYMOUS
| MAP_PRIVATE | MAP_NORESERVE, -1, 0);
return ptr == host_start ? 0 : -1;
}
return munmap(host_start, real_len);
return do_munmap(host_start, real_len);
}

int target_munmap(abi_ulong start, abi_ulong len)
Expand Down

0 comments on commit 2952b64

Please sign in to comment.