]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
libxl: fix deadlock in libxlReconnectDomain
authorMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Thu, 13 Jun 2013 01:54:09 +0000 (03:54 +0200)
committerJim Fehlig <jfehlig@suse.com>
Wed, 3 Jul 2013 20:43:31 +0000 (14:43 -0600)
Use virDomainObjListRemoveLocked instead of virDomainObjListRemove, as
driver->domains is already taken by virDomainObjListForEach.

Above deadlock can be triggered when libvirtd is started after some
domain have been started by hand (in which case driver will not find
libvirt-xml domain config).

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
src/libxl/libxl_driver.c

index 2428623b52cb750a47936a5f650c1cb9ad2d0bda..1bae3d65a3fd4f2148c105567b7b04092a165c45 100644 (file)
@@ -1117,7 +1117,7 @@ libxlReconnectDomain(virDomainObjPtr vm,
 out:
     libxlVmCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_UNKNOWN);
     if (!vm->persistent)
-        virDomainObjListRemove(driver->domains, vm);
+        virDomainObjListRemoveLocked(driver->domains, vm);
     else
         virObjectUnlock(vm);