From 1020a5041b0eb575f65b53cb1ca9cee2447a50cd Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Fri, 14 Sep 2012 10:53:00 +0200 Subject: [PATCH] qemu: Avoid deadlock on HandleAgentEOF On agent EOF the qemuProcessHandleAgentEOF() callback is called which locks virDomainObjPtr. Then qemuAgentClose() is called (with domain object locked) which eventually calls qemuAgentDispose() and qemuProcessHandleAgentDestroy(). This tries to lock the domain object again. Hence the deadlock. --- src/qemu/qemu_process.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index abbe1f9ce4..5095381b7d 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -116,7 +116,7 @@ extern struct qemud_driver *qemu_driver; * performed */ static void -qemuProcessHandleAgentEOF(qemuAgentPtr agent ATTRIBUTE_UNUSED, +qemuProcessHandleAgentEOF(qemuAgentPtr agent, virDomainObjPtr vm) { struct qemud_driver *driver = qemu_driver; @@ -128,12 +128,12 @@ qemuProcessHandleAgentEOF(qemuAgentPtr agent ATTRIBUTE_UNUSED, virDomainObjLock(vm); priv = vm->privateData; - - qemuAgentClose(agent); priv->agent = NULL; virDomainObjUnlock(vm); qemuDriverUnlock(driver); + + qemuAgentClose(agent); } -- GitLab