]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virResctrlAllocGetUnused: Use g_autoptr for variables of virResctrlAlloc type
authorPeter Krempa <pkrempa@redhat.com>
Tue, 23 Mar 2021 16:43:47 +0000 (17:43 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 12 Apr 2021 13:55:10 +0000 (15:55 +0200)
Refactor the handling of variables so that the cleanup section can be
sanitized.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/util/virresctrl.c

index c66cf4b0878efa0c2bea32d996f25bddecdb688e..53c202f99fddb8901e6f3c10bff59f09908a365b 100644 (file)
@@ -1874,8 +1874,8 @@ virResctrlAllocNewFromInfo(virResctrlInfoPtr info)
 virResctrlAllocPtr
 virResctrlAllocGetUnused(virResctrlInfoPtr resctrl)
 {
-    virResctrlAllocPtr ret = NULL;
-    virResctrlAllocPtr alloc = NULL;
+    g_autoptr(virResctrlAlloc) ret = NULL;
+    g_autoptr(virResctrlAlloc) alloc_default = NULL;
     struct dirent *ent = NULL;
     g_autoptr(DIR) dirp = NULL;
     int rv = -1;
@@ -1890,17 +1890,18 @@ virResctrlAllocGetUnused(virResctrlInfoPtr resctrl)
     if (!ret)
         return NULL;
 
-    alloc = virResctrlAllocGetDefault(resctrl);
-    if (!alloc)
-        goto error;
+    alloc_default = virResctrlAllocGetDefault(resctrl);
+    if (!alloc_default)
+        return NULL;
 
-    virResctrlAllocSubtract(ret, alloc);
-    virObjectUnref(alloc);
+    virResctrlAllocSubtract(ret, alloc_default);
 
     if (virDirOpen(&dirp, SYSFS_RESCTRL_PATH) < 0)
-        goto error;
+        return NULL;
 
     while ((rv = virDirRead(dirp, &ent, SYSFS_RESCTRL_PATH)) > 0) {
+        g_autoptr(virResctrlAlloc) alloc = NULL;
+
         if (STREQ(ent->d_name, "info"))
             continue;
 
@@ -1912,24 +1913,15 @@ virResctrlAllocGetUnused(virResctrlInfoPtr resctrl)
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            _("Could not read schemata file for group %s"),
                            ent->d_name);
-            goto error;
+            return NULL;
         }
 
         virResctrlAllocSubtract(ret, alloc);
-        virObjectUnref(alloc);
-        alloc = NULL;
     }
     if (rv < 0)
-        goto error;
-
- cleanup:
-    virObjectUnref(alloc);
-    return ret;
+        return NULL;
 
- error:
-    virObjectUnref(ret);
-    ret = NULL;
-    goto cleanup;
+    return g_steal_pointer(&ret);
 }