The event needs to be emitted after the last monitor call, so that it's
not possible to find the device in the XML accidentally while the vm
object is unlocked.
Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=1414393
---
src/qemu/qemu_hotplug.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 5b0a3f515..a6de25407 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -3691,9 +3691,6 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
VIR_DEBUG("Removing memory device %s from domain %p %s",
mem->info.alias, vm, vm->def->name);
- event = virDomainEventDeviceRemovedNewFromObj(vm, mem->info.alias);
- qemuDomainEventQueue(driver, event);
-
if (virAsprintf(&backendAlias, "mem%s", mem->info.alias) < 0)
return -1;
@@ -3708,6 +3705,9 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
if (rc < 0)
return -1;
+ event = virDomainEventDeviceRemovedNewFromObj(vm, mem->info.alias);
+ qemuDomainEventQueue(driver, event);
+
if ((idx = virDomainMemoryFindByDef(vm->def, mem)) >= 0)
virDomainMemoryRemove(vm->def, idx);
--
2.11.0