mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
storage: Fix the memory leak
The return value of virGetFCHostNameByWWN is a strdup'ed string. Also add comments to declare that the caller should take care of freeing it.
This commit is contained in:
parent
7519958735
commit
88ae5dc759
@ -668,6 +668,8 @@ static int
|
|||||||
deleteVport(virStoragePoolSourceAdapter adapter)
|
deleteVport(virStoragePoolSourceAdapter adapter)
|
||||||
{
|
{
|
||||||
unsigned int parent_host;
|
unsigned int parent_host;
|
||||||
|
char *name = NULL;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
if (adapter.type != VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_FC_HOST)
|
if (adapter.type != VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_FC_HOST)
|
||||||
return 0;
|
return 0;
|
||||||
@ -680,18 +682,21 @@ deleteVport(virStoragePoolSourceAdapter adapter)
|
|||||||
if (!adapter.data.fchost.parent)
|
if (!adapter.data.fchost.parent)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!(virGetFCHostNameByWWN(NULL, adapter.data.fchost.wwnn,
|
if (!(name = virGetFCHostNameByWWN(NULL, adapter.data.fchost.wwnn,
|
||||||
adapter.data.fchost.wwpn)))
|
adapter.data.fchost.wwpn)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (getHostNumber(adapter.data.fchost.parent, &parent_host) < 0)
|
if (getHostNumber(adapter.data.fchost.parent, &parent_host) < 0)
|
||||||
return -1;
|
goto cleanup;
|
||||||
|
|
||||||
if (virManageVport(parent_host, adapter.data.fchost.wwpn,
|
if (virManageVport(parent_host, adapter.data.fchost.wwpn,
|
||||||
adapter.data.fchost.wwnn, VPORT_DELETE) < 0)
|
adapter.data.fchost.wwnn, VPORT_DELETE) < 0)
|
||||||
return -1;
|
goto cleanup;
|
||||||
|
|
||||||
return 0;
|
ret = 0;
|
||||||
|
cleanup:
|
||||||
|
VIR_FREE(name);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1820,7 +1820,10 @@ cleanup:
|
|||||||
/* virGetHostNameByWWN:
|
/* virGetHostNameByWWN:
|
||||||
*
|
*
|
||||||
* Iterate over the sysfs tree to get FC host name (e.g. host5)
|
* Iterate over the sysfs tree to get FC host name (e.g. host5)
|
||||||
* by wwnn,wwpn pair.
|
* by the provided "wwnn,wwpn" pair.
|
||||||
|
*
|
||||||
|
* Returns the FC host name which must be freed by the caller,
|
||||||
|
* or NULL on failure.
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
virGetFCHostNameByWWN(const char *sysfs_prefix,
|
virGetFCHostNameByWWN(const char *sysfs_prefix,
|
||||||
|
Loading…
Reference in New Issue
Block a user