[libvirt] [PATCH 0/2] Couple of cleanup patches

Fix a couple of things seen while continuing work in the area... John Ferlan (2): conf: Cleanup matchFCHostToSCSIHost conf: Fix leak in virNodeDeviceObjListExport src/conf/node_device_conf.c | 1 + src/conf/storage_conf.c | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) -- 2.9.3

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@redhat.com> --- 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

Fix a leak introduced by 4337bc57b when VIR_STRDUP'g the parent. Signed-off-by: John Ferlan <jferlan@redhat.com> --- src/conf/node_device_conf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 1c81b48..c802840 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -2288,6 +2288,7 @@ virNodeDeviceObjListExport(virConnectPtr conn, if (devices) { if (!(device = virGetNodeDevice(conn, devobj->def->name)) || VIR_STRDUP(device->parent, devobj->def->parent) < 0) { + virObjectUnref(device); virNodeDeviceObjUnlock(devobj); goto cleanup; } -- 2.9.3
participants (2)
-
John Ferlan
-
Pavel Hrdina