---
src/qemu/qemu_process.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 4528b58..3d383ef 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -2584,6 +2584,7 @@ qemuProcessInitPasswords(virConnectPtr conn,
qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
size_t i;
+ char *alias = NULL;
for (i = 0; i < vm->def->ngraphics; ++i) {
virDomainGraphicsDefPtr graphics = vm->def->graphics[i];
@@ -2609,7 +2610,6 @@ qemuProcessInitPasswords(virConnectPtr conn,
for (i = 0; i < vm->def->ndisks; i++) {
char *secret;
size_t secretLen;
- const char *alias;
if (!vm->def->disks[i]->src->encryption ||
!virDomainDiskGetSource(vm->def->disks[i]))
@@ -2620,20 +2620,26 @@ qemuProcessInitPasswords(virConnectPtr conn,
&secret, &secretLen) < 0)
goto cleanup;
- alias = vm->def->disks[i]->info.alias;
+ VIR_FREE(alias);
+ if (VIR_STRDUP(alias, vm->def->disks[i]->info.alias) < 0)
+ goto cleanup;
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) {
VIR_FREE(secret);
goto cleanup;
}
ret = qemuMonitorSetDrivePassphrase(priv->mon, alias, secret);
VIR_FREE(secret);
- qemuDomainObjExitMonitor(driver, vm);
+ if (qemuDomainObjExitMonitor(driver, vm) < 0) {
+ ret = -1;
+ goto cleanup;
+ }
if (ret < 0)
goto cleanup;
}
}
cleanup:
+ VIR_FREE(alias);
virObjectUnref(cfg);
return ret;
}
@@ -4181,6 +4187,7 @@ int qemuProcessStart(virConnectPtr conn,
virCommandPtr cmd = NULL;
struct qemuProcessHookData hookData;
unsigned long cur_balloon;
+ unsigned int period = 0;
size_t i;
bool rawio_set = false;
char *nodeset = NULL;
@@ -4793,15 +4800,18 @@ int qemuProcessStart(virConnectPtr conn,
vm->def->mem.cur_balloon);
goto cleanup;
}
+ if (vm->def->memballoon && vm->def->memballoon->period)
+ period = vm->def->memballoon->period;
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
goto cleanup;
- if (vm->def->memballoon && vm->def->memballoon->period)
- qemuMonitorSetMemoryStatsPeriod(priv->mon,
vm->def->memballoon->period);
+ if (period)
+ qemuMonitorSetMemoryStatsPeriod(priv->mon, period);
if (qemuMonitorSetBalloon(priv->mon, cur_balloon) < 0) {
qemuDomainObjExitMonitor(driver, vm);
goto cleanup;
}
- qemuDomainObjExitMonitor(driver, vm);
+ if (qemuDomainObjExitMonitor(driver, vm) < 0)
+ goto cleanup;
if (!(flags & VIR_QEMU_PROCESS_START_PAUSED)) {
VIR_DEBUG("Starting domain CPUs");
--
2.0.4