On 01/07/2014 10:25 AM, Michal Privoznik wrote:
The function checks for @conn to be valid and locks its mutex. Then,
it
checks if callee is unregistering the same callback that he registered
previously. If this fails an error is reported and the control jumps to
'error' label. Here, if @conn has some errors (and it certainly does -
the one that's been just reported) the conn->mutex is locked again -
without any previous unlock:
ACK; bug introduced in commit ca0ea2a.
+++ b/src/libvirt.c
@@ -21022,9 +21022,9 @@ virConnectUnregisterCloseCallback(virConnectPtr conn,
return 0;
error:
- virDispatchError(conn);
virObjectUnlock(conn->closeCallback);
virMutexUnlock(&conn->lock);
+ virDispatchError(conn);
return -1;
}
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org