From d7ca39e0fb7f795d6431a76c73e7828ffded4f2a Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 5 Jun 2018 09:35:12 +0200 Subject: [PATCH] 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 --- src/qemu/qemu_driver.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c200c5a63d..b7b318896f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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; }