From 5140a2f626c34a2c55f776c283ceb95b6a48c788 Mon Sep 17 00:00:00 2001 From: Adam Litke Date: Mon, 8 Mar 2010 15:15:44 +0100 Subject: [PATCH] Fix locking in qemudDomainMemoryStats When adding domainMemoryStats API support for the qemu driver, I didn't follow the locking rules exactly. The job condition must be held when executing monitor commands. This corrects the segfaults I was seeing when calling domainMemoryStats in a multi-threaded environment. * src/qemu/qemu_driver.c: in qemudDomainMemoryStats() add missing calls to qemuDomainObjBeginJob/qemuDomainObjEndJob --- src/qemu/qemu_driver.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 02068c46ed..57f3b2cb58 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7708,6 +7708,9 @@ qemudDomainMemoryStats (virDomainPtr dom, goto cleanup; } + if (qemuDomainObjBeginJob(vm) < 0) + goto cleanup; + if (virDomainObjIsActive(vm)) { qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjEnterMonitor(vm); @@ -7718,6 +7721,9 @@ qemudDomainMemoryStats (virDomainPtr dom, "%s", _("domain is not running")); } + if (qemuDomainObjEndJob(vm) == 0) + vm = NULL; + cleanup: if (vm) virDomainObjUnlock(vm); -- 2.47.2