[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 06/34] exec: Fix file_ram_alloc() error API violations
From: |
Markus Armbruster |
Subject: |
[PULL 06/34] exec: Fix file_ram_alloc() error API violations |
Date: |
Tue, 17 Dec 2019 07:26:23 +0100 |
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>
Message-Id: <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 a34c348184..6bd4aa1d87 100644
--- a/exec.c
+++ b/exec.c
@@ -1843,6 +1843,7 @@ static void *file_ram_alloc(RAMBlock *block,
bool truncate,
Error **errp)
{
+ Error *err = NULL;
MachineState *ms = MACHINE(qdev_get_machine());
void *area;
@@ -1900,8 +1901,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;
}
--
2.21.0
- [PULL 08/34] hw/core: Fix fit_load_fdt() error API violations, (continued)
- [PULL 08/34] hw/core: Fix fit_load_fdt() error API violations, Markus Armbruster, 2019/12/17
- [PULL 03/34] crypto: Fix typo in QCryptoTLSSession's <example> comment, Markus Armbruster, 2019/12/17
- [PULL 13/34] hw/intc/s390: Simplify error handling in kvm_s390_flic_realize(), Markus Armbruster, 2019/12/17
- [PULL 05/34] tests: Clean up initialization of Error *err variables, Markus Armbruster, 2019/12/17
- [PULL 07/34] hw/acpi: Fix legacy CPU plug error API violations, Markus Armbruster, 2019/12/17
- [PULL 26/34] monitor/qmp-cmds: rename Error ** parameter to more common errp, Markus Armbruster, 2019/12/17
- [PULL 33/34] hw/vfio/ap: drop local_err from vfio_ap_realize, Markus Armbruster, 2019/12/17
- [PULL 09/34] hw/ipmi: Fix realize() error API violations, Markus Armbruster, 2019/12/17
- [PULL 29/34] hw/tpm: rename Error ** parameter to more common errp, Markus Armbruster, 2019/12/17
- [PULL 10/34] qga: Fix guest-get-fsinfo error API violations, Markus Armbruster, 2019/12/17
- [PULL 06/34] exec: Fix file_ram_alloc() error API violations,
Markus Armbruster <=
- [PULL 15/34] net/net: Clean up variable shadowing in net_client_init(), Markus Armbruster, 2019/12/17
- [PULL 16/34] error: make Error **errp const where it is appropriate, Markus Armbruster, 2019/12/17
- [PULL 28/34] hw/sd: drop extra whitespace in sdhci_sysbus_realize() header, Markus Armbruster, 2019/12/17
- [PULL 19/34] qdev-monitor: make Error **errp const where it is appropriate, Markus Armbruster, 2019/12/17
- [PULL 18/34] vnc: drop Error pointer indirection in vnc_client_io_error, Markus Armbruster, 2019/12/17
- [PULL 23/34] block/snapshot: rename Error ** parameter to more common errp, Markus Armbruster, 2019/12/17
- [PULL 32/34] backends/cryptodev: drop local_err from cryptodev_backend_complete(), Markus Armbruster, 2019/12/17
- [PULL 34/34] nbd: assert that Error** is not NULL in nbd_iter_channel_error, Markus Armbruster, 2019/12/17