[libvirt] [PATCH] domain_conf: fix crash in virDomainObjListFindByUUIDInternal

Michael Chapman mike at very.puzzling.org
Wed Mar 11 02:19:54 UTC 2015


If a domain object is being removed and looked up concurrently we must
ensure we unlock the object before unreferencing it, since the latter
might free the object.

Signed-off-by: Michael Chapman <mike at very.puzzling.org>
---
 src/conf/domain_conf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index cc8616b..ce0e173 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1068,9 +1068,9 @@ virDomainObjListFindByUUIDInternal(virDomainObjListPtr doms,
     if (obj) {
         virObjectLock(obj);
         if (obj->removing) {
+            virObjectUnlock(obj);
             if (ref)
                 virObjectUnref(obj);
-            virObjectUnlock(obj);
             obj = NULL;
         }
     }
-- 
2.1.0




More information about the libvir-list mailing list