summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qemu/qemu_hotplug.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 29f526ff37..e71a204bfd 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -2912,11 +2912,11 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
{
qemuDomainObjPrivatePtr priv = vm->privateData;
unsigned long long oldmem = virDomainDefGetMemoryActual(vm->def);
+ unsigned long long newmem = oldmem - mem->size;
virObjectEventPtr event;
char *backendAlias = NULL;
int rc;
int idx;
- int ret = -1;
VIR_DEBUG("Removing memory device %s from domain %p %s",
mem->info.alias, vm, vm->def->name);
@@ -2925,12 +2925,18 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
qemuDomainEventQueue(driver, event);
if (virAsprintf(&backendAlias, "mem%s", mem->info.alias) < 0)
- goto cleanup;
+ return -1;
qemuDomainObjEnterMonitor(driver, vm);
rc = qemuMonitorDelObject(priv->mon, backendAlias);
- if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0)
- goto cleanup;
+ if (qemuDomainObjExitMonitor(driver, vm) < 0)
+ rc = -1;
+
+ VIR_FREE(backendAlias);
+
+ virDomainAuditMemory(vm, oldmem, newmem, "update", rc == 0);
+ if (rc < 0)
+ return -1;
vm->def->mem.cur_balloon -= mem->size;
@@ -2938,14 +2944,7 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
virDomainMemoryRemove(vm->def, idx);
virDomainMemoryDefFree(mem);
- ret = 0;
-
- cleanup:
- virDomainAuditMemory(vm, oldmem, virDomainDefGetMemoryActual(vm->def),
- "update", ret == 0);
-
- VIR_FREE(backendAlias);
- return ret;
+ return 0;
}