提交 e2ecd9f4 编写于 作者: Y Yi Li 提交者: Michal Privoznik

Unlock the storage pool objects after looking it up

Use g_new0 to allocate and remove NULL checks from callers
and the lock will release properly
Signed-off-by: NYi Li <yili@winhong.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
上级 aad31f46
...@@ -1036,10 +1036,7 @@ virStoragePoolObjVolumeListExport(virConnectPtr conn, ...@@ -1036,10 +1036,7 @@ virStoragePoolObjVolumeListExport(virConnectPtr conn,
return ret; return ret;
} }
if (VIR_ALLOC_N(data.vols, virHashSize(volumes->objsName) + 1) < 0) { data.vols = g_new0(virStorageVolPtr, virHashSize(volumes->objsName) + 1);
virObjectRWUnlock(volumes);
return -1;
}
virHashForEach(volumes->objsName, virStoragePoolObjVolumeListExportCallback, &data); virHashForEach(volumes->objsName, virStoragePoolObjVolumeListExportCallback, &data);
virObjectRWUnlock(volumes); virObjectRWUnlock(volumes);
...@@ -2077,8 +2074,13 @@ virStoragePoolObjListExport(virConnectPtr conn, ...@@ -2077,8 +2074,13 @@ virStoragePoolObjListExport(virConnectPtr conn,
virObjectRWLockRead(poolobjs); virObjectRWLockRead(poolobjs);
if (pools && VIR_ALLOC_N(data.pools, virHashSize(poolobjs->objs) + 1) < 0) if (!pools) {
goto error; int ret = virHashSize(poolobjs->objs);
virObjectRWUnlock(poolobjs);
return ret;
}
data.pools = g_new0(virStoragePoolPtr, virHashSize(poolobjs->objs) + 1);
virHashForEach(poolobjs->objs, virStoragePoolObjListExportCallback, &data); virHashForEach(poolobjs->objs, virStoragePoolObjListExportCallback, &data);
virObjectRWUnlock(poolobjs); virObjectRWUnlock(poolobjs);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册