[libvirt] [PATCH] Fix race in ref counting when handling RPC jobs

Eric Blake eblake at redhat.com
Tue Jul 26 15:11:32 UTC 2011


On 07/26/2011 08:56 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange"<berrange at redhat.com>
>
> When an incoming RPC message is ready for processing,
>
>    virNetServerClientDispatchRead()
>
> will invoke the 'dispatchFunc' callback. This is set to
>
>    virNetServerDispatchNewMessage
>
> This function puts the message + client in a queue for processing by the thread
> pool. The thread pool worker function is
>
>    virNetServerHandleJob
>
> The first thing this does is acquire an extra reference on the 'client'.
>
> Unfortunately, between the time the message+client are put on the thread pool
> queue, and the time the worker runs, the client object may have had its last
> reference removed.
>
> We clearly need to add the reference to the client object before putting the
> client on the processing queue

ACK.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list