]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: hotplug: Properly emit "DEVICE_DELETED" event when unplugging memory
authorPeter Krempa <pkrempa@redhat.com>
Fri, 20 Jan 2017 13:24:35 +0000 (14:24 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Jan 2017 13:24:35 +0000 (14:24 +0100)
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

index 5b0a3f5155feccb62d4ffb2477801af2159bfffe..a6de25407132090f1d0cb23f5130f3445e73a474 100644 (file)
@@ -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);