Message ID | 20200403191150.863-5-alex.bennee@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | a selection of random fixes | expand |
On 4/3/20 9:11 PM, Alex Bennée wrote: > Searching for memory space can cause problems so lets extend the > CPU_LOG_PAGE output so you can watch init_guest_space fail to > allocate memory. A more involved fix is actually required to make this > function play nicely with the large guard pages the sanitiser likes to TIL "in an effort to differentiate British English from American, many British publishers have begun giving -ise endings even to words that have always been spelled -ize." https://grammarist.com/spelling/sanitise-sanitize/ > use. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Reviewed-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > linux-user/elfload.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index 8198be04460..619c054cc48 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -2172,6 +2172,8 @@ unsigned long init_guest_space(unsigned long host_start, > > /* Check to see if the address is valid. */ > if (host_start && real_start != current_start) { > + qemu_log_mask(CPU_LOG_PAGE, "invalid %lx && %lx != %lx\n", > + host_start, real_start, current_start); > goto try_again; > } > > @@ -2240,7 +2242,11 @@ unsigned long init_guest_space(unsigned long host_start, > * probably a bad strategy if not, which means we got here > * because of trouble with ARM commpage setup. > */ > - munmap((void *)real_start, real_size); > + if (munmap((void *)real_start, real_size) != 0) { > + error_report("%s: failed to unmap %lx:%lx (%s)", __func__, > + real_start, real_size, strerror(errno)); > + abort(); > + } > current_start += align; > if (host_start == current_start) { > /* Theoretically possible if host doesn't have any suitably >
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 8198be04460..619c054cc48 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2172,6 +2172,8 @@ unsigned long init_guest_space(unsigned long host_start, /* Check to see if the address is valid. */ if (host_start && real_start != current_start) { + qemu_log_mask(CPU_LOG_PAGE, "invalid %lx && %lx != %lx\n", + host_start, real_start, current_start); goto try_again; } @@ -2240,7 +2242,11 @@ unsigned long init_guest_space(unsigned long host_start, * probably a bad strategy if not, which means we got here * because of trouble with ARM commpage setup. */ - munmap((void *)real_start, real_size); + if (munmap((void *)real_start, real_size) != 0) { + error_report("%s: failed to unmap %lx:%lx (%s)", __func__, + real_start, real_size, strerror(errno)); + abort(); + } current_start += align; if (host_start == current_start) { /* Theoretically possible if host doesn't have any suitably