]> git.proxmox.com Git - mirror_qemu.git/blobdiff - exec.c
qcow2: Inform block layer about discard boundaries
[mirror_qemu.git] / exec.c
diff --git a/exec.c b/exec.c
index 50e3ee237cf1fff42dbd00ab53f5ca7152fc2ede..8ffde75983e082aa4206cd0417104ff02fffb736 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -1226,7 +1226,7 @@ static void *file_ram_alloc(RAMBlock *block,
     char *filename;
     char *sanitized_name;
     char *c;
-    void *area;
+    void *area = MAP_FAILED;
     int fd = -1;
     int64_t page_size;
 
@@ -1314,13 +1314,19 @@ static void *file_ram_alloc(RAMBlock *block,
     }
 
     if (mem_prealloc) {
-        os_mem_prealloc(fd, area, memory);
+        os_mem_prealloc(fd, area, memory, errp);
+        if (errp && *errp) {
+            goto error;
+        }
     }
 
     block->fd = fd;
     return area;
 
 error:
+    if (area != MAP_FAILED) {
+        qemu_ram_munmap(area, memory);
+    }
     if (unlink_on_error) {
         unlink(path);
     }