linux-user: test, don't assert addr != test in pgb_reserved_va
On older kernels which don't implement MAP_FIXED_NOREPLACE the kernel
may still fail to give us the address we asked for despite having
already probed the map for a valid hole. Asserting isn't particularly
useful to the user so let us move the check up and expand the
error_report a little to give them a fighting chance of working around
the problem.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Cc: Bug 1895080 <1895080@bugs.launchpad.net>
Ameliorates: ee94743034
Message-Id: <20200915134317.11110-2-alex.bennee@linaro.org>
This commit is contained in:
parent
de39a045bd
commit
fb730c8683
@ -2331,14 +2331,13 @@ static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr,
|
||||
assert(guest_base != 0);
|
||||
test = g2h(0);
|
||||
addr = mmap(test, reserved_va, PROT_NONE, flags, -1, 0);
|
||||
if (addr == MAP_FAILED) {
|
||||
if (addr == MAP_FAILED || addr != test) {
|
||||
error_report("Unable to reserve 0x%lx bytes of virtual address "
|
||||
"space (%s) for use as guest address space (check your "
|
||||
"virtual memory ulimit setting or reserve less "
|
||||
"using -R option)", reserved_va, strerror(errno));
|
||||
"space at %p (%s) for use as guest address space (check your"
|
||||
"virtual memory ulimit setting, min_mmap_addr or reserve less "
|
||||
"using -R option)", reserved_va, test, strerror(errno));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
assert(addr == test);
|
||||
}
|
||||
|
||||
void probe_guest_base(const char *image_name, abi_ulong guest_loaddr,
|
||||
|
Loading…
Reference in New Issue
Block a user