a41c76
From bcc3726dae87335a533565c6d679434fa69fe75e Mon Sep 17 00:00:00 2001
a41c76
Message-Id: <bcc3726dae87335a533565c6d679434fa69fe75e@dist-git>
a41c76
From: Peter Krempa <pkrempa@redhat.com>
a41c76
Date: Mon, 16 Mar 2020 22:11:41 +0100
a41c76
Subject: [PATCH] qemu: Don't take double pointer in qemuDomainSecretInfoFree
a41c76
MIME-Version: 1.0
a41c76
Content-Type: text/plain; charset=UTF-8
a41c76
Content-Transfer-Encoding: 8bit
a41c76
a41c76
Using a double pointer prevents the function from being used as the
a41c76
automatic cleanup function for the given type.
a41c76
a41c76
Remove the double pointer use by replacing the calls with
a41c76
g_clear_pointer which ensures that the pointer is cleared.
a41c76
a41c76
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
a41c76
Reviewed-by: Ján Tomko <jtomko@redhat.com>
a41c76
(cherry picked from commit 38bc76bcc1e1bccb7f3265e15b60b0f6f8fe6dfa)
a41c76
https://bugzilla.redhat.com/show_bug.cgi?id=1804750
a41c76
Message-Id: <56ebeda94754aab81a682202f26c1dc158ac063a.1584391726.git.pkrempa@redhat.com>
a41c76
Reviewed-by: Ján Tomko <jtomko@redhat.com>
a41c76
---
a41c76
 src/qemu/qemu_domain.c           | 30 +++++++++++++-----------------
a41c76
 src/qemu/qemu_domain.h           |  2 +-
a41c76
 src/qemu/qemu_migration_params.c |  2 +-
a41c76
 3 files changed, 15 insertions(+), 19 deletions(-)
a41c76
a41c76
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
a41c76
index 14bab896bc..b77488026a 100644
a41c76
--- a/src/qemu/qemu_domain.c
a41c76
+++ b/src/qemu/qemu_domain.c
a41c76
@@ -1106,14 +1106,10 @@ qemuDomainSecretInfoClear(qemuDomainSecretInfoPtr secinfo,
a41c76
 
a41c76
 
a41c76
 void
a41c76
-qemuDomainSecretInfoFree(qemuDomainSecretInfoPtr *secinfo)
a41c76
+qemuDomainSecretInfoFree(qemuDomainSecretInfoPtr secinfo)
a41c76
 {
a41c76
-    if (!*secinfo)
a41c76
-        return;
a41c76
-
a41c76
-    qemuDomainSecretInfoClear(*secinfo, false);
a41c76
-
a41c76
-    VIR_FREE(*secinfo);
a41c76
+    qemuDomainSecretInfoClear(secinfo, false);
a41c76
+    g_free(secinfo);
a41c76
 }
a41c76
 
a41c76
 
a41c76
@@ -1203,8 +1199,8 @@ qemuDomainStorageSourcePrivateDispose(void *obj)
a41c76
 {
a41c76
     qemuDomainStorageSourcePrivatePtr priv = obj;
a41c76
 
a41c76
-    qemuDomainSecretInfoFree(&priv->secinfo);
a41c76
-    qemuDomainSecretInfoFree(&priv->encinfo);
a41c76
+    g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree);
a41c76
+    g_clear_pointer(&priv->encinfo, qemuDomainSecretInfoFree);
a41c76
 }
a41c76
 
a41c76
 
a41c76
@@ -1283,7 +1279,7 @@ qemuDomainChrSourcePrivateDispose(void *obj)
a41c76
 {
a41c76
     qemuDomainChrSourcePrivatePtr priv = obj;
a41c76
 
a41c76
-    qemuDomainSecretInfoFree(&priv->secinfo);
a41c76
+    g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree);
a41c76
 }
a41c76
 
a41c76
 
a41c76
@@ -1362,7 +1358,7 @@ qemuDomainGraphicsPrivateDispose(void *obj)
a41c76
     qemuDomainGraphicsPrivatePtr priv = obj;
a41c76
 
a41c76
     VIR_FREE(priv->tlsAlias);
a41c76
-    qemuDomainSecretInfoFree(&priv->secinfo);
a41c76
+    g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree);
a41c76
 }
a41c76
 
a41c76
 
a41c76
@@ -1642,7 +1638,7 @@ qemuDomainSecretInfoNewPlain(virSecretUsageType usageType,
a41c76
         return NULL;
a41c76
 
a41c76
     if (qemuDomainSecretPlainSetup(secinfo, usageType, username, lookupDef) < 0) {
a41c76
-        qemuDomainSecretInfoFree(&secinfo);
a41c76
+        g_clear_pointer(&secinfo, qemuDomainSecretInfoFree);
a41c76
         return NULL;
a41c76
     }
a41c76
 
a41c76
@@ -1685,7 +1681,7 @@ qemuDomainSecretInfoNew(qemuDomainObjPrivatePtr priv,
a41c76
 
a41c76
     if (qemuDomainSecretAESSetup(priv, secinfo, srcAlias, usageType, username,
a41c76
                                  lookupDef, isLuks) < 0) {
a41c76
-        qemuDomainSecretInfoFree(&secinfo);
a41c76
+        g_clear_pointer(&secinfo, qemuDomainSecretInfoFree);
a41c76
         return NULL;
a41c76
     }
a41c76
 
a41c76
@@ -1847,7 +1843,7 @@ qemuDomainSecretHostdevDestroy(virDomainHostdevDefPtr hostdev)
a41c76
         if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) {
a41c76
             srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(iscsisrc->src);
a41c76
             if (srcPriv && srcPriv->secinfo)
a41c76
-                qemuDomainSecretInfoFree(&srcPriv->secinfo);
a41c76
+                g_clear_pointer(&srcPriv->secinfo, qemuDomainSecretInfoFree);
a41c76
         }
a41c76
     }
a41c76
 }
a41c76
@@ -1891,7 +1887,7 @@ qemuDomainSecretChardevDestroy(virDomainChrSourceDefPtr dev)
a41c76
     if (!chrSourcePriv || !chrSourcePriv->secinfo)
a41c76
         return;
a41c76
 
a41c76
-    qemuDomainSecretInfoFree(&chrSourcePriv->secinfo);
a41c76
+    g_clear_pointer(&chrSourcePriv->secinfo, qemuDomainSecretInfoFree);
a41c76
 }
a41c76
 
a41c76
 
a41c76
@@ -1947,7 +1943,7 @@ qemuDomainSecretGraphicsDestroy(virDomainGraphicsDefPtr graphics)
a41c76
         return;
a41c76
 
a41c76
     VIR_FREE(gfxPriv->tlsAlias);
a41c76
-    qemuDomainSecretInfoFree(&gfxPriv->secinfo);
a41c76
+    g_clear_pointer(&gfxPriv->secinfo, qemuDomainSecretInfoFree);
a41c76
 }
a41c76
 
a41c76
 
a41c76
@@ -2307,7 +2303,7 @@ qemuDomainObjPrivateFree(void *data)
a41c76
     }
a41c76
     VIR_FREE(priv->cleanupCallbacks);
a41c76
 
a41c76
-    qemuDomainSecretInfoFree(&priv->migSecinfo);
a41c76
+    g_clear_pointer(&priv->migSecinfo, qemuDomainSecretInfoFree);
a41c76
     qemuDomainMasterKeyFree(priv);
a41c76
 
a41c76
     virHashFree(priv->blockjobs);
a41c76
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
a41c76
index 9d143b575d..89a967efd7 100644
a41c76
--- a/src/qemu/qemu_domain.h
a41c76
+++ b/src/qemu/qemu_domain.h
a41c76
@@ -1032,7 +1032,7 @@ void qemuDomainMasterKeyRemove(qemuDomainObjPrivatePtr priv);
a41c76
 
a41c76
 bool qemuDomainSupportsEncryptedSecret(qemuDomainObjPrivatePtr priv);
a41c76
 
a41c76
-void qemuDomainSecretInfoFree(qemuDomainSecretInfoPtr *secinfo)
a41c76
+void qemuDomainSecretInfoFree(qemuDomainSecretInfoPtr secinfo)
a41c76
     ATTRIBUTE_NONNULL(1);
a41c76
 
a41c76
 void qemuDomainSecretInfoDestroy(qemuDomainSecretInfoPtr secinfo);
a41c76
diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
a41c76
index 45acf8cda2..f61796713f 100644
a41c76
--- a/src/qemu/qemu_migration_params.c
a41c76
+++ b/src/qemu/qemu_migration_params.c
a41c76
@@ -1090,7 +1090,7 @@ qemuMigrationParamsResetTLS(virQEMUDriverPtr driver,
a41c76
     secAlias = qemuDomainGetSecretAESAlias(QEMU_MIGRATION_TLS_ALIAS_BASE, false);
a41c76
 
a41c76
     qemuDomainDelTLSObjects(driver, vm, asyncJob, secAlias, tlsAlias);
a41c76
-    qemuDomainSecretInfoFree(&QEMU_DOMAIN_PRIVATE(vm)->migSecinfo);
a41c76
+    g_clear_pointer(&QEMU_DOMAIN_PRIVATE(vm)->migSecinfo, qemuDomainSecretInfoFree);
a41c76
 
a41c76
     VIR_FREE(tlsAlias);
a41c76
     VIR_FREE(secAlias);
a41c76
-- 
a41c76
2.25.1
a41c76