mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
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: Yi Li <yili@winhong.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
aad31f46fb
commit
e2ecd9f476
@ -1036,10 +1036,7 @@ virStoragePoolObjVolumeListExport(virConnectPtr conn,
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (VIR_ALLOC_N(data.vols, virHashSize(volumes->objsName) + 1) < 0) {
|
||||
virObjectRWUnlock(volumes);
|
||||
return -1;
|
||||
}
|
||||
data.vols = g_new0(virStorageVolPtr, virHashSize(volumes->objsName) + 1);
|
||||
|
||||
virHashForEach(volumes->objsName, virStoragePoolObjVolumeListExportCallback, &data);
|
||||
virObjectRWUnlock(volumes);
|
||||
@ -2077,8 +2074,13 @@ virStoragePoolObjListExport(virConnectPtr conn,
|
||||
|
||||
virObjectRWLockRead(poolobjs);
|
||||
|
||||
if (pools && VIR_ALLOC_N(data.pools, virHashSize(poolobjs->objs) + 1) < 0)
|
||||
goto error;
|
||||
if (!pools) {
|
||||
int ret = virHashSize(poolobjs->objs);
|
||||
virObjectRWUnlock(poolobjs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
data.pools = g_new0(virStoragePoolPtr, virHashSize(poolobjs->objs) + 1);
|
||||
|
||||
virHashForEach(poolobjs->objs, virStoragePoolObjListExportCallback, &data);
|
||||
virObjectRWUnlock(poolobjs);
|
||||
|
Loading…
x
Reference in New Issue
Block a user