From bda57661b8086b4d5858328afdfc28fe1b58f112 Mon Sep 17 00:00:00 2001 From: Wen Congyang Date: Fri, 21 Jan 2011 16:28:07 +0800 Subject: [PATCH] qemu: Fix a possible deadlock in p2p migration The function virUnrefConnect() may call virReleaseConnect() to release the dest connection, and the function virReleaseConnect() will call conn->driver->close(). So the function virUnrefConnect() should be surrounded by qemuDomainObjEnterRemoteWithDriver() and qemuDomainObjExitRemoteWithDriver() to prevent possible deadlock between two communicating libvirt daemons. See commit f0c8e1cb3774d6f09e2681ca1988bf235a343007 for further details. Signed-off-by: Wen Congyang --- src/qemu/qemu_driver.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index cff7a43111..012ce5d67e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -8790,7 +8790,9 @@ static int doPeer2PeerMigrate(virDomainPtr dom, cleanup: VIR_FREE(dom_xml); /* don't call virConnectClose(), because that resets any pending errors */ + qemuDomainObjEnterRemoteWithDriver(driver, vm); virUnrefConnect(dconn); + qemuDomainObjExitRemoteWithDriver(driver, vm); return ret; } -- GitLab