mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
qemu: Fix persistent migration of transient domains
While fixing a bug with incorrectly freed memory in commit v3.1.0-399-g5498aa29a, I accidentally broke persistent migration of transient domains. Before adding qemuDomainDefCopy in the path, the code just took NULL from vm->newDef and used it as the persistent def, which resulted in no persistent XML being sent in the migration cookie. This scenario is perfectly valid and the destination correctly handles it by using the incoming live definition and storing it as the persistent one. After the mentioned commit libvirtd would just segfault in the described scenario. https://bugzilla.redhat.com/show_bug.cgi?id=1446205 Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
71890992da
commit
59307fade8
@ -3640,15 +3640,15 @@ qemuMigrationRun(virQEMUDriverPtr driver,
|
||||
|
||||
if (flags & VIR_MIGRATE_PERSIST_DEST) {
|
||||
if (persist_xml) {
|
||||
persistDef = qemuMigrationPrepareDef(driver, persist_xml,
|
||||
NULL, NULL);
|
||||
} else {
|
||||
persistDef = qemuDomainDefCopy(driver, vm->newDef,
|
||||
VIR_DOMAIN_XML_SECURE |
|
||||
VIR_DOMAIN_XML_MIGRATABLE);
|
||||
if (!(persistDef = qemuMigrationPrepareDef(driver, persist_xml,
|
||||
NULL, NULL)))
|
||||
goto cleanup;
|
||||
} else if (vm->newDef) {
|
||||
if (!(persistDef = qemuDomainDefCopy(driver, vm->newDef,
|
||||
VIR_DOMAIN_XML_SECURE |
|
||||
VIR_DOMAIN_XML_MIGRATABLE)))
|
||||
goto cleanup;
|
||||
}
|
||||
if (!persistDef)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
mig = qemuMigrationEatCookie(driver, vm, cookiein, cookieinlen,
|
||||
|
Loading…
Reference in New Issue
Block a user