]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
libxl: unref libxlDriverConfig object
authorJim Fehlig <jfehlig@suse.com>
Wed, 18 Nov 2015 22:47:24 +0000 (15:47 -0700)
committerJim Fehlig <jfehlig@suse.com>
Thu, 19 Nov 2015 15:52:53 +0000 (08:52 -0700)
Commits b6e19cf4 and 6472e54a missed unref'ing the
libxlDriverConfig object. Add missing calls to virObjectUnref.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
src/libxl/libxl_driver.c

index fd4bae1f2061f60b1723d9938c1895c0ce3221c4..4609c0051f12f4d8b0e356319a50c675b54038df 100644 (file)
@@ -4648,18 +4648,21 @@ libxlDomainGetTotalCPUStats(libxlDriverPrivatePtr driver,
                             virTypedParameterPtr params,
                             unsigned int nparams)
 {
-    libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
+    libxlDriverConfigPtr cfg;
     libxl_dominfo d_info;
     int ret = -1;
 
     if (nparams == 0)
         return LIBXL_NB_TOTAL_CPU_STAT_PARAM;
 
+    libxl_dominfo_init(&d_info);
+    cfg = libxlDriverConfigGet(driver);
+
     if (libxl_domain_info(cfg->ctx, &d_info, vm->def->id) != 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("libxl_domain_info failed for domain '%d'"),
                        vm->def->id);
-        return ret;
+        goto cleanup;
     }
 
     if (virTypedParameterAssign(&params[0], VIR_DOMAIN_CPU_STATS_CPUTIME,
@@ -4670,6 +4673,7 @@ libxlDomainGetTotalCPUStats(libxlDriverPrivatePtr driver,
 
  cleanup:
     libxl_dominfo_dispose(&d_info);
+    virObjectUnref(cfg);
     return ret;
 }
 
@@ -4684,7 +4688,7 @@ libxlDomainGetPerCPUStats(libxlDriverPrivatePtr driver,
     libxl_vcpuinfo *vcpuinfo;
     int maxcpu, hostcpus;
     size_t i;
-    libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
+    libxlDriverConfigPtr cfg;
     int ret = -1;
 
     if (nparams == 0 && ncpus != 0)
@@ -4692,12 +4696,13 @@ libxlDomainGetPerCPUStats(libxlDriverPrivatePtr driver,
     else if (nparams == 0)
         return vm->def->maxvcpus;
 
+    cfg = libxlDriverConfigGet(driver);
     if ((vcpuinfo = libxl_list_vcpu(cfg->ctx, vm->def->id, &maxcpu,
                                     &hostcpus)) == NULL) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Failed to list vcpus for domain '%d' with libxenlight"),
                        vm->def->id);
-        return ret;
+        goto cleanup;
     }
 
     for (i = start_cpu; i < maxcpu && i < ncpus; ++i) {
@@ -4710,7 +4715,9 @@ libxlDomainGetPerCPUStats(libxlDriverPrivatePtr driver,
     ret = nparams;
 
  cleanup:
-    libxl_vcpuinfo_list_free(vcpuinfo, maxcpu);
+    if (vcpuinfo)
+        libxl_vcpuinfo_list_free(vcpuinfo, maxcpu);
+    virObjectUnref(cfg);
     return ret;
 }
 
@@ -4766,7 +4773,7 @@ libxlDomainMemoryStats(virDomainPtr dom,
                        unsigned int flags)
 {
     libxlDriverPrivatePtr driver = dom->conn->privateData;
-    libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
+    libxlDriverConfigPtr cfg;
     virDomainObjPtr vm;
     libxl_dominfo d_info;
     unsigned mem, maxmem;
@@ -4775,6 +4782,8 @@ libxlDomainMemoryStats(virDomainPtr dom,
 
     virCheckFlags(0, -1);
 
+    cfg = libxlDriverConfigGet(driver);
+
     if (!(vm = libxlDomObjFromDomain(dom)))
         goto cleanup;
 
@@ -4815,6 +4824,7 @@ libxlDomainMemoryStats(virDomainPtr dom,
  cleanup:
     if (vm)
         virObjectUnlock(vm);
+    virObjectUnref(cfg);
     return ret;
 }