File c89a6e78-libxl-physinfo-cleanup.patch of Package libvirt.6159

commit c89a6e7878e630718cce0af940e9c070c132ce30
Author: Jim Fehlig <jfehlig@suse.com>
Date:   Tue Jan 31 20:07:30 2017 -0700

    libxl: use init and dispose functions with libxl_physinfo
    
    The typical pattern when calling libxl functions that populate a
    structure is
    
      libxl_foo foo;
      libxl_foo_init(&foo);
      libxl_get_foo(ctx, &foo);
      ...
      libxl_foo_dispose(&foo);
    
    Fix several instances of libxl_physinfo missing the init and
    dispose calls.
    
    Signed-off-by: Jim Fehlig <jfehlig@suse.com>

Index: libvirt-2.0.0/src/libxl/libxl_capabilities.c
===================================================================
--- libvirt-2.0.0.orig/src/libxl/libxl_capabilities.c
+++ libvirt-2.0.0/src/libxl/libxl_capabilities.c
@@ -63,11 +63,13 @@ libxlCapsInitHost(libxl_ctx *ctx, virCap
 {
     libxl_physinfo phy_info;
     int host_pae;
+    int ret = -1;
 
+    libxl_physinfo_init(&phy_info);
     if (libxl_get_physinfo(ctx, &phy_info) != 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("Failed to get node physical info from libxenlight"));
-        return -1;
+        goto cleanup;
     }
 
     /* hw_caps is an array of 32-bit words whose meaning is listed in
@@ -78,12 +80,16 @@ libxlCapsInitHost(libxl_ctx *ctx, virCap
     host_pae = phy_info.hw_cap[0] & LIBXL_X86_FEATURE_PAE_MASK;
     if (host_pae &&
         virCapabilitiesAddHostFeature(caps, "pae") < 0)
-        return -1;
+        goto cleanup;
 
     if (virCapabilitiesSetNetPrefix(caps, LIBXL_GENERATED_PREFIX_XEN) < 0)
-        return -1;
+        goto cleanup;
 
-    return 0;
+    ret = 0;
+
+ cleanup:
+    libxl_physinfo_dispose(&phy_info);
+    return ret;
 }
 
 static int
Index: libvirt-2.0.0/src/libxl/libxl_conf.c
===================================================================
--- libvirt-2.0.0.orig/src/libxl/libxl_conf.c
+++ libvirt-2.0.0/src/libxl/libxl_conf.c
@@ -1878,6 +1878,7 @@ libxlDriverNodeGetInfo(libxlDriverPrivat
     libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
     int ret = -1;
 
+    libxl_physinfo_init(&phy_info);
     if (libxl_get_physinfo(cfg->ctx, &phy_info)) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("libxl_get_physinfo_info failed"));
@@ -1902,6 +1903,7 @@ libxlDriverNodeGetInfo(libxlDriverPrivat
     ret = 0;
 
  cleanup:
+    libxl_physinfo_dispose(&phy_info);
     virObjectUnref(cfg);
     return ret;
 }
Index: libvirt-2.0.0/src/libxl/libxl_driver.c
===================================================================
--- libvirt-2.0.0.orig/src/libxl/libxl_driver.c
+++ libvirt-2.0.0/src/libxl/libxl_driver.c
@@ -4188,6 +4188,7 @@ libxlNodeGetFreeMemory(virConnectPtr con
     libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
     unsigned long long ret = 0;
 
+    libxl_physinfo_init(&phy_info);
     if (virNodeGetFreeMemoryEnsureACL(conn) < 0)
         goto cleanup;
 
@@ -4200,6 +4201,7 @@ libxlNodeGetFreeMemory(virConnectPtr con
     ret = phy_info.free_pages * cfg->verInfo->pagesize;
 
  cleanup:
+    libxl_physinfo_dispose(&phy_info);
     virObjectUnref(cfg);
     return ret;
 }