[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 31/41] linux-user/elfload: use MAP_FIXED_NOREPLACE in pgb_reserved
From: |
Alex Bennée |
Subject: |
[PULL 31/41] linux-user/elfload: use MAP_FIXED_NOREPLACE in pgb_reserved_va |
Date: |
Tue, 7 Jul 2020 08:08:48 +0100 |
Given we assert the requested address matches what we asked we should
also make that clear in the mmap flags. Otherwise we see failures in
the GitLab environment for some currently unknown but allowable
reason. We use MAP_FIXED_NOREPLACE if we can so we don't just clobber
an existing mapping. Also include the strerror string for a bit more
info on failure.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20200701135652.1366-34-alex.bennee@linaro.org>
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index b5cb21384a1c..7e7f642332dc 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -2294,7 +2294,7 @@ static void pgb_dynamic(const char *image_name, long
align)
static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr,
abi_ulong guest_hiaddr, long align)
{
- const int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE;
+ int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE;
void *addr, *test;
if (guest_hiaddr > reserved_va) {
@@ -2307,15 +2307,19 @@ static void pgb_reserved_va(const char *image_name,
abi_ulong guest_loaddr,
/* Widen the "image" to the entire reserved address space. */
pgb_static(image_name, 0, reserved_va, align);
+#ifdef MAP_FIXED_NOREPLACE
+ flags |= MAP_FIXED_NOREPLACE;
+#endif
+
/* Reserve the memory on the host. */
assert(guest_base != 0);
test = g2h(0);
addr = mmap(test, reserved_va, PROT_NONE, flags, -1, 0);
if (addr == MAP_FAILED) {
error_report("Unable to reserve 0x%lx bytes of virtual address "
- "space for use as guest address space (check your "
+ "space (%s) for use as guest address space (check your "
"virtual memory ulimit setting or reserve less "
- "using -R option)", reserved_va);
+ "using -R option)", reserved_va, strerror(errno));
exit(EXIT_FAILURE);
}
assert(addr == test);
--
2.20.1
- Re: [PULL 10/41] python/qemu: Add ConsoleSocket for optional use in QEMUMachine, (continued)
[PULL 12/41] tests/vm: switch from optsparse to argparse, Alex Bennée, 2020/07/07
[PULL 14/41] tests/docker: check for an parameters not empty string, Alex Bennée, 2020/07/07
[PULL 15/41] tests/docker: change tag naming scheme of our images, Alex Bennée, 2020/07/07
[PULL 11/41] tests/vm: Add workaround to consume console, Alex Bennée, 2020/07/07
[PULL 13/41] tests/vm: allow us to take advantage of MTTCG, Alex Bennée, 2020/07/07
[PULL 29/41] tests/tcg: add more default compilers to configure.sh, Alex Bennée, 2020/07/07
[PULL 41/41] tests/qht-bench: Adjust threshold computation, Alex Bennée, 2020/07/07
[PULL 28/41] gitlab: add acceptance testing to system builds, Alex Bennée, 2020/07/07
[PULL 31/41] linux-user/elfload: use MAP_FIXED_NOREPLACE in pgb_reserved_va,
Alex Bennée <=
[PULL 20/41] gitlab: convert jobs to use custom built containers, Alex Bennée, 2020/07/07
[PULL 39/41] travis.yml: Test also the other targets on s390x, Alex Bennée, 2020/07/07
[PULL 18/41] gitlab: introduce explicit "container" and "build" stages, Alex Bennée, 2020/07/07
[PULL 16/41] .gitignore: un-ignore .gitlab-ci.d, Alex Bennée, 2020/07/07
[PULL 17/41] gitlab-ci: Fix the change rules after moving the YML files, Alex Bennée, 2020/07/07
[PULL 27/41] tests/acceptance: skip LinuxInitrd 2gib with v4.16 on GitLab, Alex Bennée, 2020/07/07
[PULL 36/41] containers.yml: build with docker.py tooling, Alex Bennée, 2020/07/07
[PULL 25/41] tests/acceptance: fix dtb path for machine_rx_gdbsim, Alex Bennée, 2020/07/07
[PULL 34/41] gitlab: split build-disabled into two phases, Alex Bennée, 2020/07/07
[PULL 35/41] gitlab: limit re-builds of the containers, Alex Bennée, 2020/07/07