qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v2 05/18] exec: Fix file_ram_alloc() error API violations


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v2 05/18] exec: Fix file_ram_alloc() error API violations
Date: Wed, 4 Dec 2019 15:53:10 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2

On 12/4/19 10:36 AM, Markus Armbruster wrote:
When os_mem_prealloc() fails, file_ram_alloc() calls qemu_ram_munmap()
and returns null.  Except it doesn't when its @errp argument is null,
because it checks for failure with (errp && *errp).  Introduced in
commit 056b68af77 "fix qemu exit on memory hotplug when allocation
fails at prealloc time".

No caller actually passes null.

Fix anyway: splice in a local Error *err, and error_propagate().

Cc: Igor Mammedov <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Igor Mammedov <address@hidden>

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

---
  exec.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/exec.c b/exec.c
index ffdb518535..45695a5f2d 100644
--- a/exec.c
+++ b/exec.c
@@ -1841,6 +1841,7 @@ static void *file_ram_alloc(RAMBlock *block,
                              bool truncate,
                              Error **errp)
  {
+    Error *err = NULL;
      MachineState *ms = MACHINE(qdev_get_machine());
      void *area;
@@ -1898,8 +1899,9 @@ static void *file_ram_alloc(RAMBlock *block,
      }
if (mem_prealloc) {
-        os_mem_prealloc(fd, area, memory, ms->smp.cpus, errp);
-        if (errp && *errp) {
+        os_mem_prealloc(fd, area, memory, ms->smp.cpus, &err);
+        if (err) {
+            error_propagate(errp, err);
              qemu_ram_munmap(fd, area, memory);
              return NULL;
          }





reply via email to

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