[libvirt] [PATCH libvirt v2 4/9] remote: Use domainClientEventCallbacks for remoteReplayConnectionClosedEvent
John Ferlan
jferlan at redhat.com
Wed May 9 18:32:51 UTC 2018
[...]
>>>>
>>>>> + callback->program = virObjectRef(remoteProgram);
>>>>> + /* eventID, callbackID, and legacy are not used */
>>>>> + callback->eventID = -1;
>>>>> + callback->callbackID = -1;
>>>>> if (virConnectRegisterCloseCallback(priv->conn,
>>>>> remoteRelayConnectionClosedEvent,
>>>>> - client, NULL) < 0)
>>>>> + callback, remoteEventCallbackFree) < 0)
>>>>> goto cleanup;
>>>>>
>>>>
>>>> @callback would be leaked in the normal path...
>>>
>>> By normal path, you mean without the first patch?
>>>
>>
>> I was following how the other register functions proceeded and they
>> saved the callback in a list to be freed at unregister. So if Register
>> succeeds, rv == 0 and the removeEventCallbackFree(callback) isn't called
>> and we leak callback. At least that's how I read it
>
> First - sorry for the late response!
>
> The unregister/free’ing is either done within the
> 'remoteClientFreePrivateCallbacks' call or by an explicit call of
> 'remoteDispatchConnectUnregisterCloseCallback'. Do we agree on this? If
> yes: the function 'remoteClientFreePrivateCallbacks' calls the
> virConnectUnregisterCloseCallback -> remoteEventCallbackFree => no
> memory leak.
>
> There will be only a memory leak if the virConnectRegisterCloseCallback
> call succeeds but the used driver had no support for registering a close
> callback (conn->driver->connectRegisterCloseCallback was NULL) AND the
> first patch of this series were not applied.
>
> Did I miss something?
>
Trying to recollect where I was.... and I cannot... I probably was
flipping between patched and unpatched code. I assume it had something
to do with adding the callback to a list, running DEREG_CB processing,
and perhaps seeing DELETE_ELEMENT that got me overthinking, but taking a
second look now I don't believe there's an issue.
So, to make it official then...
Reviewed-by: John Ferlan <jferlan at redhat.com>
John
More information about the libvir-list
mailing list