From: Peter Krempa Date: Wed, 24 Jul 2019 15:33:38 +0000 (+0200) Subject: qemu: blockjob: Ensure that config disk source is identical when modifying it X-Git-Tag: v5.6.0-rc1~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=56ad575dbe2a7901dc135aa7bcab7b79b7c3fb57;p=thirdparty%2Flibvirt.git qemu: blockjob: Ensure that config disk source is identical when modifying it qemuBlockJobRewriteConfigDiskSource rewrites the disk source only according to the 'target'. This means that if someone would change the inactive config of the VM to refer to a different disk a block job would rewrite it when finishing a job which modifies the disk source. Make sure that this does not happen by verifying that the source of the config disk is the same. Signed-off-by: Peter Krempa ACKed-by: Eric Blake --- diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index 487ef24d5c..1e19347b03 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -479,6 +479,9 @@ qemuBlockJobRewriteConfigDiskSource(virDomainObjPtr vm, if (!(persistDisk = virDomainDiskByName(vm->newDef, disk->dst, false))) return; + if (!virStorageSourceIsSameLocation(disk->src, persistDisk->src)) + return; + if (!(copy = virStorageSourceCopy(newsrc, false)) || virStorageSourceInitChainElement(copy, persistDisk->src, true) < 0) { VIR_WARN("Unable to update persistent definition on vm %s after block job",