[libvirt PATCH 03/10] virDomainNumatuneNodeParseXML: Use g_autofree

Tim Wiederhake posted 10 patches 4 years, 9 months ago
There is a newer version of this series
[libvirt PATCH 03/10] virDomainNumatuneNodeParseXML: Use g_autofree
Posted by Tim Wiederhake 4 years, 9 months ago
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
---
 src/conf/numa_conf.c | 33 ++++++++++++++-------------------
 1 file changed, 14 insertions(+), 19 deletions(-)

diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
index bae59ac7b8..531bdc6eba 100644
--- a/src/conf/numa_conf.c
+++ b/src/conf/numa_conf.c
@@ -155,16 +155,15 @@ static int
 virDomainNumatuneNodeParseXML(virDomainNuma *numa,
                               xmlXPathContextPtr ctxt)
 {
-    char *tmp = NULL;
+    g_autofree char *tmp = NULL;
     int n = 0;
-    int ret = -1;
     size_t i = 0;
-    xmlNodePtr *nodes = NULL;
+    g_autofree xmlNodePtr *nodes = NULL;
 
     if ((n = virXPathNodeSet("./numatune/memnode", ctxt, &nodes)) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("Cannot extract memnode nodes"));
-        goto cleanup;
+        return -1;
     }
 
     if (!n)
@@ -175,14 +174,14 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("Per-node binding is not compatible with "
                          "automatic NUMA placement."));
-        goto cleanup;
+        return -1;
     }
 
     if (!numa->nmem_nodes) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("Element 'memnode' is invalid without "
                          "any guest NUMA cells"));
-        goto cleanup;
+        return -1;
     }
 
     for (i = 0; i < n; i++) {
@@ -192,13 +191,13 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
 
         if (virXMLPropUInt(cur_node, "cellid", 10, VIR_XML_PROP_REQUIRED,
                            &cellid) < 0)
-            goto cleanup;
+            return -1;
 
         if (cellid >= numa->nmem_nodes) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("Argument 'cellid' in memnode element must "
                              "correspond to existing guest's NUMA cell"));
-            goto cleanup;
+            return -1;
         }
 
         mem_node = &numa->mem_nodes[cellid];
@@ -207,21 +206,21 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
             virReportError(VIR_ERR_XML_ERROR,
                            _("Multiple memnode elements with cellid %u"),
                            cellid);
-            goto cleanup;
+            return -1;
         }
 
         if (virXMLPropEnumDefault(cur_node, "mode",
                                   virDomainNumatuneMemModeTypeFromString,
                                   VIR_XML_PROP_NONE, &mem_node->mode,
                                   VIR_DOMAIN_NUMATUNE_MEM_STRICT) < 0)
-            goto cleanup;
+            return -1;
 
         if (numa->memory.mode == VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE &&
             mem_node->mode != VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("'restrictive' mode is required in memnode element "
                              "when mode is 'restrictive' in memory element"));
-            goto cleanup;
+            return -1;
         }
 
         tmp = virXMLPropString(cur_node, "nodeset");
@@ -229,24 +228,20 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
             virReportError(VIR_ERR_XML_ERROR, "%s",
                            _("Missing required nodeset attribute "
                              "in memnode element"));
-            goto cleanup;
+            return -1;
         }
         if (virBitmapParse(tmp, &mem_node->nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
-            goto cleanup;
+            return -1;
 
         if (virBitmapIsAllClear(mem_node->nodeset)) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("Invalid value of 'nodeset': %s"), tmp);
-            goto cleanup;
+            return -1;
         }
         VIR_FREE(tmp);
     }
 
-    ret = 0;
- cleanup:
-    VIR_FREE(nodes);
-    VIR_FREE(tmp);
-    return ret;
+    return 0;
 }
 
 int
-- 
2.26.3

Re: [libvirt PATCH 03/10] virDomainNumatuneNodeParseXML: Use g_autofree
Posted by Laine Stump 4 years, 9 months ago
On 5/11/21 11:01 AM, Tim Wiederhake wrote:
> Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
> ---
>   src/conf/numa_conf.c | 33 ++++++++++++++-------------------
>   1 file changed, 14 insertions(+), 19 deletions(-)
> 
> diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
> index bae59ac7b8..531bdc6eba 100644
> --- a/src/conf/numa_conf.c
> +++ b/src/conf/numa_conf.c
> @@ -155,16 +155,15 @@ static int
>   virDomainNumatuneNodeParseXML(virDomainNuma *numa,
>                                 xmlXPathContextPtr ctxt)
>   {
> -    char *tmp = NULL;
> +    g_autofree char *tmp = NULL;

tmp should be defined inside the for loop so that it's autofreed after 
each iteration.

>       int n = 0;
> -    int ret = -1;
>       size_t i = 0;
> -    xmlNodePtr *nodes = NULL;
> +    g_autofree xmlNodePtr *nodes = NULL;
>   
>       if ((n = virXPathNodeSet("./numatune/memnode", ctxt, &nodes)) < 0) {
>           virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                          _("Cannot extract memnode nodes"));
> -        goto cleanup;
> +        return -1;
>       }
>   
>       if (!n)
> @@ -175,14 +174,14 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
>           virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>                          _("Per-node binding is not compatible with "
>                            "automatic NUMA placement."));
> -        goto cleanup;
> +        return -1;
>       }
>   
>       if (!numa->nmem_nodes) {
>           virReportError(VIR_ERR_XML_ERROR, "%s",
>                          _("Element 'memnode' is invalid without "
>                            "any guest NUMA cells"));
> -        goto cleanup;
> +        return -1;
>       }
>   
>       for (i = 0; i < n; i++) {
> @@ -192,13 +191,13 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
>   
>           if (virXMLPropUInt(cur_node, "cellid", 10, VIR_XML_PROP_REQUIRED,
>                              &cellid) < 0)
> -            goto cleanup;
> +            return -1;
>   
>           if (cellid >= numa->nmem_nodes) {
>               virReportError(VIR_ERR_XML_ERROR, "%s",
>                              _("Argument 'cellid' in memnode element must "
>                                "correspond to existing guest's NUMA cell"));
> -            goto cleanup;
> +            return -1;
>           }
>   
>           mem_node = &numa->mem_nodes[cellid];
> @@ -207,21 +206,21 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
>               virReportError(VIR_ERR_XML_ERROR,
>                              _("Multiple memnode elements with cellid %u"),
>                              cellid);
> -            goto cleanup;
> +            return -1;
>           }
>   
>           if (virXMLPropEnumDefault(cur_node, "mode",
>                                     virDomainNumatuneMemModeTypeFromString,
>                                     VIR_XML_PROP_NONE, &mem_node->mode,
>                                     VIR_DOMAIN_NUMATUNE_MEM_STRICT) < 0)
> -            goto cleanup;
> +            return -1;
>   
>           if (numa->memory.mode == VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE &&
>               mem_node->mode != VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE) {
>               virReportError(VIR_ERR_XML_ERROR, "%s",
>                              _("'restrictive' mode is required in memnode element "
>                                "when mode is 'restrictive' in memory element"));
> -            goto cleanup;
> +            return -1;
>           }
>   
>           tmp = virXMLPropString(cur_node, "nodeset");
> @@ -229,24 +228,20 @@ virDomainNumatuneNodeParseXML(virDomainNuma *numa,
>               virReportError(VIR_ERR_XML_ERROR, "%s",
>                              _("Missing required nodeset attribute "
>                                "in memnode element"));
> -            goto cleanup;
> +            return -1;
>           }
>           if (virBitmapParse(tmp, &mem_node->nodeset, VIR_DOMAIN_CPUMASK_LEN) < 0)
> -            goto cleanup;
> +            return -1;
>   
>           if (virBitmapIsAllClear(mem_node->nodeset)) {
>               virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>                              _("Invalid value of 'nodeset': %s"), tmp);
> -            goto cleanup;
> +            return -1;
>           }
>           VIR_FREE(tmp);
>       }
>   
> -    ret = 0;
> - cleanup:
> -    VIR_FREE(nodes);
> -    VIR_FREE(tmp);
> -    return ret;
> +    return 0;
>   }
>   
>   int
>