On 5/7/20, Peter Krempa <pkrempa@xxxxxxxxxx> wrote: > On Thu, May 07, 2020 at 18:48:55 +0800, Yi Li wrote: >> The lock should be released. >> >> Signed-off-by: Yi Li <yili@xxxxxxxxxxx> >> --- >> src/conf/virstorageobj.c | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c >> index 13b75b648d..9f24ae67ca 100644 >> --- a/src/conf/virstorageobj.c >> +++ b/src/conf/virstorageobj.c >> @@ -2077,8 +2077,10 @@ virStoragePoolObjListExport(virConnectPtr conn, >> >> virObjectRWLockRead(poolobjs); >> >> - if (pools && VIR_ALLOC_N(data.pools, virHashSize(poolobjs->objs) + 1) >> < 0) >> - goto error; >> + if (pools && VIR_ALLOC_N(data.pools, virHashSize(poolobjs->objs) + 1) >> < 0) { >> + virObjectRWUnlock(poolobjs); >> + return -1; >> + } > > In this instance, I'd prefer if VIR_ALLOC_N is replaced by g_new0 which > will not fail and thus the unlock will not be necessary as there will be > no cleanup path. > > Thanks, i will redo it.