From: Hu Tao Date: Fri, 22 Jun 2012 03:26:03 +0000 (+0800) Subject: fix a bug of ref count in virnetserver.c X-Git-Tag: v0.9.13-rc1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c77bf04b03ff026bb37212a195070d8983f530d;p=thirdparty%2Flibvirt.git fix a bug of ref count in virnetserver.c The test of ref count is not protected by lock, which is unsafe because the ref count may have been changed by other threads during the test. This patch fixes this. --- diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c index 9d71e53698..247ddd7585 100644 --- a/src/rpc/virnetserver.c +++ b/src/rpc/virnetserver.c @@ -759,15 +759,16 @@ void virNetServerQuit(virNetServerPtr srv) void virNetServerFree(virNetServerPtr srv) { int i; + int refs; if (!srv) return; virNetServerLock(srv); VIR_DEBUG("srv=%p refs=%d", srv, srv->refs); - srv->refs--; + refs = --srv->refs; virNetServerUnlock(srv); - if (srv->refs > 0) + if (refs > 0) return; for (i = 0 ; i < srv->nservices ; i++)