qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 04/12] linux-user: more debug for init_guest_space


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v3 04/12] linux-user: more debug for init_guest_space
Date: Fri, 3 Apr 2020 22:39:56 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

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 <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>

Reviewed-by: Philippe Mathieu-Daudé <address@hidden>

---
  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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]