diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 6ffec55267..e46bad24cc 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2327,11 +2327,11 @@ qemuDomainDefPostParse(virDomainDefPtr def, virCapsPtr caps, unsigned int parseFlags, void *opaque, - void *parseOpaque ATTRIBUTE_UNUSED) + void *parseOpaque) { virQEMUDriverPtr driver = opaque; virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); - virQEMUCapsPtr qemuCaps = NULL; + virQEMUCapsPtr qemuCaps = parseOpaque; int ret = -1; if (def->os.bootloader || def->os.bootloaderArgs) { @@ -2360,10 +2360,14 @@ qemuDomainDefPostParse(virDomainDefPtr def, !(def->emulator = virDomainDefGetDefaultEmulator(def, caps))) goto cleanup; - if (!(qemuCaps = virQEMUCapsCacheLookup(caps, - driver->qemuCapsCache, - def->emulator))) - goto cleanup; + if (qemuCaps) { + virObjectRef(qemuCaps); + } else { + if (!(qemuCaps = virQEMUCapsCacheLookup(caps, + driver->qemuCapsCache, + def->emulator))) + goto cleanup; + } if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0) goto cleanup; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index df48eab4a6..e2ca3303ef 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3242,7 +3242,7 @@ qemuMigrationBeginPhase(virQEMUDriverPtr driver, } if (xmlin) { - if (!(def = virDomainDefParseString(xmlin, caps, driver->xmlopt, NULL, + if (!(def = virDomainDefParseString(xmlin, caps, driver->xmlopt, priv->qemuCaps, VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE))) goto cleanup;