diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index e406d53af4a2444f6de22e50d730f875e305a8b1..d0b9b5246b04620fba23aeefb5b7947d37a65922 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2625,8 +2625,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, { virBuffer buf = VIR_BUFFER_INITIALIZER; int address_type = def->info.type; - const virDomainPCIControllerOpts *pciopts; - const char *modelName = NULL; *devstr = NULL; @@ -2726,11 +2724,9 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, break; - case VIR_DOMAIN_CONTROLLER_TYPE_PCI: - pciopts = &def->opts.pciopts; - if (def->model != VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT && - def->model != VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST) - modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName); + case VIR_DOMAIN_CONTROLLER_TYPE_PCI: { + const virDomainPCIControllerOpts *pciopts = &def->opts.pciopts; + const char *modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName); /* Skip the implicit PHB for pSeries guests */ if (def->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT && @@ -2739,6 +2735,13 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, goto done; } + if (!modelName) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown virDomainControllerPCIModelName value: %d"), + pciopts->modelName); + return -1; + } + switch ((virDomainControllerModelPCI) def->model) { case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE: virBufferAsprintf(&buf, "%s,chassis_nr=%d,id=%s", @@ -2780,6 +2783,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, goto error; } break; + } case VIR_DOMAIN_CONTROLLER_TYPE_IDE: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: