Rather than the inlined VIR_FREE's, use a cleanup: label... Fixes an issue introduced by 03346def where @name was free'd before usage in a virAsprintf to format scsi_host_name. Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> --- src/conf/storage_conf.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 0e9a51f..a52eeba 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -2341,6 +2341,7 @@ matchFCHostToSCSIHost(virConnectPtr conn, virStoragePoolSourceAdapter fc_adapter, unsigned int scsi_hostnum) { + bool ret = false; char *name = NULL; char *scsi_host_name = NULL; char *parent_name = NULL; @@ -2362,10 +2363,9 @@ matchFCHostToSCSIHost(virConnectPtr conn, * matches our scsi_hostnum */ if (virStorageIsSameHostnum(name, scsi_hostnum)) { - VIR_FREE(name); - return true; + ret = true; + goto cleanup; } - VIR_FREE(name); /* We weren't provided a parent, so we have to query the node * device driver in order to ascertain the parent of the vHBA. @@ -2373,23 +2373,18 @@ matchFCHostToSCSIHost(virConnectPtr conn, * have a match. */ if (conn && !fc_adapter.data.fchost.parent) { - if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0) { - VIR_FREE(name); - return false; - } + if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0) + goto cleanup; if ((parent_name = virNodeDeviceGetParentName(conn, scsi_host_name))) { - VIR_FREE(scsi_host_name); if (virStorageIsSameHostnum(parent_name, scsi_hostnum)) { - VIR_FREE(parent_name); - return true; + ret = true; + goto cleanup; } - VIR_FREE(parent_name); } else { /* Throw away the error and fall through */ virResetLastError(); VIR_DEBUG("Could not determine parent vHBA"); - VIR_FREE(scsi_host_name); } } } @@ -2401,7 +2396,12 @@ matchFCHostToSCSIHost(virConnectPtr conn, * conflict with an existing scsi_host definition, but there's no * way to know that now. */ - return false; + + cleanup: + VIR_FREE(name); + VIR_FREE(parent_name); + VIR_FREE(scsi_host_name); + return ret; } static bool -- 2.9.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list