qemu: Fix detaching from persistent def in qemuDomainDetachDeviceAliasLiveAndConfig

The code that detaches the device from persistent definition copies the
persistent definition first so that it can easily be rolled back. The
actual detaching is then made in the copy which is assigned back on
success (if the live operation succeeded as well).

This is not the case in qemuDomainDetachDeviceAliasLiveAndConfig where
the definition was copied and put back, but the detaching happened from
the other object which was overwritten.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Peter Krempa 2018-06-05 09:35:12 +02:00
parent 234ce7d02f
commit d7ca39e0fb

View File

@ -8822,14 +8822,13 @@ qemuDomainDetachDeviceAliasLiveAndConfig(virQEMUDriverPtr driver,
if (persistentDef) {
virDomainDeviceDef dev;
vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
if (!vmdef)
if (!(vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt)))
goto cleanup;
if (virDomainDefFindDevice(persistentDef, alias, &dev, true) < 0)
if (virDomainDefFindDevice(vmdef, alias, &dev, true) < 0)
goto cleanup;
if (qemuDomainDetachDeviceConfig(persistentDef, &dev, caps,
if (qemuDomainDetachDeviceConfig(vmdef, &dev, caps,
parse_flags, driver->xmlopt) < 0)
goto cleanup;
}