[libvirt] [PATCH] qemu: Fix detaching from persistent def in qemuDomainDetachDeviceAliasLiveAndConfig

Michal Privoznik mprivozn at redhat.com
Tue Jun 5 14:00:59 UTC 2018


On 06/05/2018 09:38 AM, Peter Krempa wrote:
> 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 at redhat.com>
> ---
>  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;
>      }
> 

Ooops, yes. ACK.

Michal




More information about the libvir-list mailing list