mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-13 16:15:19 +00:00
cpu_ppc64.c: use g_autoptr() whenever possible
Using g_autoptr() in virCPUDef pointers allows for more cleanups in ppc64Compute() and virCPUppc64Baseline() Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
c9491341af
commit
ddbff7e3ee
@ -421,15 +421,14 @@ ppc64Compute(virCPUDefPtr host,
|
||||
g_autoptr(virCPUppc64Map) map = NULL;
|
||||
g_autoptr(virCPUppc64Model) host_model = NULL;
|
||||
g_autoptr(virCPUppc64Model) guest_model = NULL;
|
||||
virCPUDefPtr cpu = NULL;
|
||||
virCPUCompareResult ret = VIR_CPU_COMPARE_ERROR;
|
||||
g_autoptr(virCPUDef) cpu = NULL;
|
||||
virArch arch;
|
||||
size_t i;
|
||||
|
||||
/* Ensure existing configurations are handled correctly */
|
||||
if (!(cpu = virCPUDefCopy(other)) ||
|
||||
virCPUppc64ConvertLegacy(cpu) < 0)
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_ERROR;
|
||||
|
||||
if (cpu->arch != VIR_ARCH_NONE) {
|
||||
bool found = false;
|
||||
@ -448,8 +447,7 @@ ppc64Compute(virCPUDefPtr host,
|
||||
*message = g_strdup_printf(_("CPU arch %s does not match host arch"),
|
||||
virArchToString(cpu->arch));
|
||||
|
||||
ret = VIR_CPU_COMPARE_INCOMPATIBLE;
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_INCOMPATIBLE;
|
||||
}
|
||||
arch = cpu->arch;
|
||||
} else {
|
||||
@ -466,16 +464,15 @@ ppc64Compute(virCPUDefPtr host,
|
||||
cpu->vendor);
|
||||
}
|
||||
|
||||
ret = VIR_CPU_COMPARE_INCOMPATIBLE;
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
if (!(map = ppc64LoadMap()))
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_ERROR;
|
||||
|
||||
/* Host CPU information */
|
||||
if (!(host_model = ppc64ModelFromCPU(host, map)))
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_ERROR;
|
||||
|
||||
if (cpu->type == VIR_CPU_TYPE_GUEST) {
|
||||
/* Guest CPU information */
|
||||
@ -485,10 +482,8 @@ ppc64Compute(virCPUDefPtr host,
|
||||
/* host-model only:
|
||||
* we need to take compatibility modes into account */
|
||||
tmp = ppc64CheckCompatibilityMode(host->model, cpu->model);
|
||||
if (tmp != VIR_CPU_COMPARE_IDENTICAL) {
|
||||
ret = tmp;
|
||||
goto cleanup;
|
||||
}
|
||||
if (tmp != VIR_CPU_COMPARE_IDENTICAL)
|
||||
return tmp;
|
||||
G_GNUC_FALLTHROUGH;
|
||||
|
||||
case VIR_CPU_MODE_HOST_PASSTHROUGH:
|
||||
@ -509,7 +504,7 @@ ppc64Compute(virCPUDefPtr host,
|
||||
}
|
||||
|
||||
if (!guest_model)
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_ERROR;
|
||||
|
||||
if (STRNEQ(guest_model->name, host_model->name)) {
|
||||
VIR_DEBUG("host CPU model does not match required CPU model %s",
|
||||
@ -520,19 +515,14 @@ ppc64Compute(virCPUDefPtr host,
|
||||
guest_model->name);
|
||||
}
|
||||
|
||||
ret = VIR_CPU_COMPARE_INCOMPATIBLE;
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
if (guestData)
|
||||
if (!(*guestData = ppc64MakeCPUData(arch, &guest_model->data)))
|
||||
goto cleanup;
|
||||
return VIR_CPU_COMPARE_ERROR;
|
||||
|
||||
ret = VIR_CPU_COMPARE_IDENTICAL;
|
||||
|
||||
cleanup:
|
||||
virCPUDefFree(cpu);
|
||||
return ret;
|
||||
return VIR_CPU_COMPARE_IDENTICAL;
|
||||
}
|
||||
|
||||
static virCPUCompareResult
|
||||
@ -666,16 +656,16 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
|
||||
g_autoptr(virCPUppc64Map) map = NULL;
|
||||
const virCPUppc64Model *model;
|
||||
const virCPUppc64Vendor *vendor = NULL;
|
||||
virCPUDefPtr cpu = NULL;
|
||||
g_autoptr(virCPUDef) cpu = NULL;
|
||||
size_t i;
|
||||
|
||||
if (!(map = ppc64LoadMap()))
|
||||
goto error;
|
||||
return NULL;
|
||||
|
||||
if (!(model = ppc64ModelFind(map, cpus[0]->model))) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unknown CPU model %s"), cpus[0]->model);
|
||||
goto error;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < ncpus; i++) {
|
||||
@ -695,7 +685,7 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
|
||||
if (STRNEQ(cpus[i]->model, model->name)) {
|
||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
||||
_("CPUs are incompatible"));
|
||||
goto error;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!cpus[i]->vendor)
|
||||
@ -704,7 +694,7 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
|
||||
if (!(vnd = ppc64VendorFind(map, cpus[i]->vendor))) {
|
||||
virReportError(VIR_ERR_OPERATION_FAILED,
|
||||
_("Unknown CPU vendor %s"), cpus[i]->vendor);
|
||||
goto error;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (model->vendor) {
|
||||
@ -714,13 +704,13 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
|
||||
"vendor %s"),
|
||||
model->vendor->name, model->name,
|
||||
vnd->name);
|
||||
goto error;
|
||||
return NULL;
|
||||
}
|
||||
} else if (vendor) {
|
||||
if (vendor != vnd) {
|
||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
||||
_("CPU vendors do not match"));
|
||||
goto error;
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
vendor = vnd;
|
||||
@ -738,12 +728,7 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
|
||||
cpu->match = VIR_CPU_MATCH_EXACT;
|
||||
cpu->fallback = VIR_CPU_FALLBACK_FORBID;
|
||||
|
||||
return cpu;
|
||||
|
||||
error:
|
||||
virCPUDefFree(cpu);
|
||||
cpu = NULL;
|
||||
return NULL;
|
||||
return g_steal_pointer(&cpu);
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
x
Reference in New Issue
Block a user