[libvirt] [PATCH 1/2] qemu: Use refcounting for priv->monConfig

Marc Hartmayer mhartmay at linux.ibm.com
Wed Feb 20 08:51:06 UTC 2019


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

Signed-off-by: Marc Hartmayer <mhartmay at linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
---
 src/qemu/qemu_driver.c  | 5 +----
 src/qemu/qemu_process.c | 6 +++---
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index fe1b7801e9fc..010d7e285384 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -17026,21 +17026,18 @@ static virDomainPtr qemuDomainQemuAttach(virConnectPtr conn,
 
     if (qemuProcessAttach(conn, driver, vm, pid,
                           pidfile, monConfig, monJSON) < 0) {
-        monConfig = NULL;
         qemuDomainRemoveInactive(driver, vm);
         qemuDomainObjEndJob(driver, vm);
         goto cleanup;
     }
 
-    monConfig = NULL;
-
     dom = virGetDomain(conn, vm->def->name, vm->def->uuid, vm->def->id);
 
     qemuDomainObjEndJob(driver, vm);
 
  cleanup:
     virDomainDefFree(def);
-    virDomainChrSourceDefFree(monConfig);
+    virObjectUnref(monConfig);
     virDomainObjEndAPI(&vm);
     VIR_FREE(pidfile);
     virObjectUnref(caps);
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 85952b997566..f06fe62f9931 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -7528,8 +7528,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
         goto error;
 
     VIR_DEBUG("Preparing monitor state");
-    priv->monConfig = monConfig;
-    monConfig = NULL;
+    priv->monConfig = virObjectRef(monConfig);
     priv->monJSON = monJSON;
 
     /* 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);
     if (seclabelgen)
         virSecurityLabelDefFree(seclabeldef);
-    virDomainChrSourceDefFree(monConfig);
+    virObjectUnref(priv->monConfig);
+    priv->monConfig = NULL;
     virObjectUnref(cfg);
     virObjectUnref(caps);
     return -1;
-- 
2.17.0




More information about the libvir-list mailing list