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;
|
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,
|
|||||||
|
|
||||||
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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user