提交 88ae5dc7 编写于 作者: O Osier Yang

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.
上级 75199587
...@@ -668,6 +668,8 @@ static int ...@@ -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) ...@@ -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: ...@@ -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,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册