virISCSIDirectScanTargets now returns a GStrv, so we can use automatic cleanup for it and get rid of the cleanup section. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/storage/storage_backend_iscsi_direct.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/storage/storage_backend_iscsi_direct.c b/src/storage/storage_backend_iscsi_direct.c index 2073a6df38..b108b12f7b 100644 --- a/src/storage/storage_backend_iscsi_direct.c +++ b/src/storage/storage_backend_iscsi_direct.c @@ -485,8 +485,7 @@ virStorageBackendISCSIDirectFindPoolSources(const char *srcSpec, unsigned int flags) { size_t ntargets = 0; - char **targets = NULL; - char *ret = NULL; + g_auto(GStrv) targets = NULL; size_t i; g_autoptr(virStoragePoolSourceList) list = g_new0(virStoragePoolSourceList, 1); g_autofree char *portal = NULL; @@ -508,20 +507,20 @@ virStorageBackendISCSIDirectFindPoolSources(const char *srcSpec, if (source->nhost != 1) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Expected exactly 1 host for the storage pool")); - goto cleanup; + return NULL; } if (!source->initiator.iqn) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("missing initiator IQN")); - goto cleanup; + return NULL; } if (!(portal = virStorageBackendISCSIDirectPortal(source))) - goto cleanup; + return NULL; if (virISCSIDirectScanTargets(source->initiator.iqn, portal, &ntargets, &targets) < 0) - goto cleanup; + return NULL; list->sources = g_new0(virStoragePoolSource, ntargets); @@ -541,14 +540,7 @@ virStorageBackendISCSIDirectFindPoolSources(const char *srcSpec, list->nsources++; } - if (!(ret = virStoragePoolSourceListFormat(list))) - goto cleanup; - - cleanup: - for (i = 0; i < ntargets; i++) - VIR_FREE(targets[i]); - VIR_FREE(targets); - return ret; + return virStoragePoolSourceListFormat(list); } static struct iscsi_context * -- 2.31.1