qemu: Use refcounting for priv->monConfig

Use refcounting for priv->monConfig instead of asymmetric freeing.

Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Marc Hartmayer 2019-02-20 09:51:06 +01:00 committed by Ján Tomko
parent 27a9ebf281
commit 527da4ce9b
2 changed files with 4 additions and 7 deletions

View File

@ -17026,21 +17026,18 @@ static virDomainPtr qemuDomainQemuAttach(virConnectPtr conn,
if (qemuProcessAttach(conn, driver, vm, pid, if (qemuProcessAttach(conn, driver, vm, pid,
pidfile, monConfig, monJSON) < 0) { pidfile, monConfig, monJSON) < 0) {
monConfig = NULL;
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
qemuDomainObjEndJob(driver, vm); qemuDomainObjEndJob(driver, vm);
goto cleanup; goto cleanup;
} }
monConfig = NULL;
dom = virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id); dom = virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id);
qemuDomainObjEndJob(driver, vm); qemuDomainObjEndJob(driver, vm);
cleanup: cleanup:
virDomainDefFree(def); virDomainDefFree(def);
virDomainChrSourceDefFree(monConfig); virObjectUnref(monConfig);
virDomainObjEndAPI(&vm); virDomainObjEndAPI(&vm);
VIR_FREE(pidfile); VIR_FREE(pidfile);
virObjectUnref(caps); virObjectUnref(caps);

View File

@ -7528,8 +7528,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
goto error; goto error;
VIR_DEBUG("Preparing monitor state"); VIR_DEBUG("Preparing monitor state");
priv->monConfig = monConfig; priv->monConfig = virObjectRef(monConfig);
monConfig = NULL;
priv->monJSON = monJSON; priv->monJSON = monJSON;
/* Attaching to running QEMU so we need to detect whether it was started /* Attaching to running QEMU so we need to detect whether it was started
@ -7648,7 +7647,8 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
VIR_FREE(sec_managers); VIR_FREE(sec_managers);
if (seclabelgen) if (seclabelgen)
virSecurityLabelDefFree(seclabeldef); virSecurityLabelDefFree(seclabeldef);
virDomainChrSourceDefFree(monConfig); virObjectUnref(priv->monConfig);
priv->monConfig = NULL;
virObjectUnref(cfg); virObjectUnref(cfg);
virObjectUnref(caps); virObjectUnref(caps);
return -1; return -1;