47 lines
1.7 KiB
Diff
47 lines
1.7 KiB
Diff
|
|
From d9190851ed9a28e86d5baa3a9872eb6246270cd1 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Michal Privoznik <mprivozn@redhat.com>
|
||
|
|
Date: Thu, 16 Apr 2020 14:18:28 +0200
|
||
|
|
Subject: [PATCH 5/8] qemuDomainDefPostParse: Fail if unable to fill machine
|
||
|
|
type
|
||
|
|
|
||
|
|
Previously, we used virCapabilitiesDomainDataLookup() to fill
|
||
|
|
machine type in post parse callback if none was provided in the
|
||
|
|
domain XML. If machine type couldn't be filled in an error was
|
||
|
|
reported. After 4a4132b4625 we've changed it to
|
||
|
|
virQEMUCapsGetPreferredMachine() which returns NULL, but we no
|
||
|
|
longer report an error and proceed with the post parse callbacks
|
||
|
|
processing. This may lead to a crash because the code later on
|
||
|
|
assumes def->os.machine is not NULL.
|
||
|
|
|
||
|
|
Fixes: 4a4132b4625
|
||
|
|
|
||
|
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||
|
|
Reviewed-by: Pavel Mores <pmores@redhat.com>
|
||
|
|
Signed-off-by: AlexChen <alex.chen@huawei.com>
|
||
|
|
---
|
||
|
|
src/qemu/qemu_domain.c | 8 ++++++++
|
||
|
|
1 file changed, 8 insertions(+)
|
||
|
|
|
||
|
|
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
||
|
|
index b1a46478ed..36e6343995 100644
|
||
|
|
--- a/src/qemu/qemu_domain.c
|
||
|
|
+++ b/src/qemu/qemu_domain.c
|
||
|
|
@@ -4971,6 +4971,14 @@ qemuDomainDefPostParse(virDomainDefPtr def,
|
||
|
|
if (!def->os.machine) {
|
||
|
|
const char *machine = virQEMUCapsGetPreferredMachine(qemuCaps,
|
||
|
|
def->virtType);
|
||
|
|
+ if (!machine) {
|
||
|
|
+ virReportError(VIR_ERR_INVALID_ARG,
|
||
|
|
+ _("could not get preferred machine for %s type=%s"),
|
||
|
|
+ def->emulator,
|
||
|
|
+ virDomainVirtTypeToString(def->virtType));
|
||
|
|
+ return -1;
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
def->os.machine = g_strdup(machine);
|
||
|
|
}
|
||
|
|
|
||
|
|
--
|
||
|
|
2.23.0
|
||
|
|
|