[libvirt PATCH 08/10] datatypes: Use automatic mutex management
Michal Prívozník
mprivozn at redhat.com
Tue Apr 5 08:54:30 UTC 2022
On 3/25/22 16:02, Tim Wiederhake wrote:
> Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> ---
> src/datatypes.c | 63 +++++++++++++++----------------------------------
> 1 file changed, 19 insertions(+), 44 deletions(-)
>
> diff --git a/src/datatypes.c b/src/datatypes.c
> index aa614612f9..da8a9970f1 100644
> --- a/src/datatypes.c
> +++ b/src/datatypes.c
> int
> @@ -1173,14 +1153,12 @@ virAdmConnectCloseCallbackDataRegister(virAdmConnectCloseCallbackData *cbdata,
> void *opaque,
> virFreeCallback freecb)
> {
> - int ret = -1;
> -
> - virObjectLock(cbdata);
Here, @cbdata used to be locked ...
> + VIR_LOCK_GUARD lock = virObjectLockGuard(cbdata);
>
> if (cbdata->callback) {
> virReportError(VIR_ERR_OPERATION_INVALID, "%s",
> _("A close callback is already registered"));
> - goto cleanup;
> + return -1;
> }
>
> cbdata->conn = virObjectRef(conn);
> @@ -1188,10 +1166,7 @@ virAdmConnectCloseCallbackDataRegister(virAdmConnectCloseCallbackData *cbdata,
> cbdata->opaque = opaque;
> cbdata->freeCallback = freecb;
>
> - ret = 0;
> - cleanup:
> - virObjectUnlock(conn->closeCallback);
... but ere conn->closeCallback was unlocked. I believe your change is
correct and in fact fixes this problem. But can't really verify because
this function is never called.
> - return ret;
> + return 0;
> }
>
> virAdmServerPtr
Michal
More information about the libvir-list
mailing list