1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

cpu_ppc64.c: use g_autoptr() with virCPUppc64MapPtr

Use autocleanup with virCPUppc64MapPtr to simplify existing
code. Remove labels when possible.

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:
Daniel Henrique Barboza 2020-09-02 17:25:43 -03:00 committed by Ján Tomko
parent f5e5ba3a55
commit 76d2c048c9

View File

@ -390,19 +390,15 @@ ppc64ModelParse(xmlXPathContextPtr ctxt,
static virCPUppc64MapPtr static virCPUppc64MapPtr
ppc64LoadMap(void) ppc64LoadMap(void)
{ {
virCPUppc64MapPtr map; g_autoptr(virCPUppc64Map) map = NULL;
if (VIR_ALLOC(map) < 0) if (VIR_ALLOC(map) < 0)
goto error; return NULL;
if (cpuMapLoad("ppc64", ppc64VendorParse, NULL, ppc64ModelParse, map) < 0) if (cpuMapLoad("ppc64", ppc64VendorParse, NULL, ppc64ModelParse, map) < 0)
goto error;
return map;
error:
ppc64MapFree(map);
return NULL; return NULL;
return g_steal_pointer(&map);
} }
static virCPUDataPtr static virCPUDataPtr
@ -428,7 +424,7 @@ ppc64Compute(virCPUDefPtr host,
virCPUDataPtr *guestData, virCPUDataPtr *guestData,
char **message) char **message)
{ {
virCPUppc64MapPtr map = NULL; g_autoptr(virCPUppc64Map) map = NULL;
g_autoptr(virCPUppc64Model) host_model = NULL; g_autoptr(virCPUppc64Model) host_model = NULL;
g_autoptr(virCPUppc64Model) guest_model = NULL; g_autoptr(virCPUppc64Model) guest_model = NULL;
virCPUDefPtr cpu = NULL; virCPUDefPtr cpu = NULL;
@ -542,7 +538,6 @@ ppc64Compute(virCPUDefPtr host,
cleanup: cleanup:
virCPUDefFree(cpu); virCPUDefFree(cpu);
ppc64MapFree(map);
return ret; return ret;
} }
@ -585,8 +580,7 @@ ppc64DriverDecode(virCPUDefPtr cpu,
const virCPUData *data, const virCPUData *data,
virDomainCapsCPUModelsPtr models) virDomainCapsCPUModelsPtr models)
{ {
int ret = -1; g_autoptr(virCPUppc64Map) map = NULL;
virCPUppc64MapPtr map;
const virCPUppc64Model *model; const virCPUppc64Model *model;
if (!data || !(map = ppc64LoadMap())) if (!data || !(map = ppc64LoadMap()))
@ -596,26 +590,21 @@ ppc64DriverDecode(virCPUDefPtr cpu,
virReportError(VIR_ERR_OPERATION_FAILED, virReportError(VIR_ERR_OPERATION_FAILED,
_("Cannot find CPU model with PVR 0x%08x"), _("Cannot find CPU model with PVR 0x%08x"),
data->data.ppc64.pvr[0].value); data->data.ppc64.pvr[0].value);
goto cleanup; return -1;
} }
if (!virCPUModelIsAllowed(model->name, models)) { if (!virCPUModelIsAllowed(model->name, models)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("CPU model %s is not supported by hypervisor"), _("CPU model %s is not supported by hypervisor"),
model->name); model->name);
goto cleanup; return -1;
} }
cpu->model = g_strdup(model->name); cpu->model = g_strdup(model->name);
if (model->vendor) if (model->vendor)
cpu->vendor = g_strdup(model->vendor->name); cpu->vendor = g_strdup(model->vendor->name);
ret = 0; return 0;
cleanup:
ppc64MapFree(map);
return ret;
} }
static void static void
@ -686,7 +675,7 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
const char **features G_GNUC_UNUSED, const char **features G_GNUC_UNUSED,
bool migratable G_GNUC_UNUSED) bool migratable G_GNUC_UNUSED)
{ {
virCPUppc64MapPtr map; g_autoptr(virCPUppc64Map) map = NULL;
const virCPUppc64Model *model; const virCPUppc64Model *model;
const virCPUppc64Vendor *vendor = NULL; const virCPUppc64Vendor *vendor = NULL;
virCPUDefPtr cpu = NULL; virCPUDefPtr cpu = NULL;
@ -761,23 +750,19 @@ virCPUppc64Baseline(virCPUDefPtr *cpus,
cpu->match = VIR_CPU_MATCH_EXACT; cpu->match = VIR_CPU_MATCH_EXACT;
cpu->fallback = VIR_CPU_FALLBACK_FORBID; cpu->fallback = VIR_CPU_FALLBACK_FORBID;
cleanup:
ppc64MapFree(map);
return cpu; return cpu;
error: error:
virCPUDefFree(cpu); virCPUDefFree(cpu);
cpu = NULL; cpu = NULL;
goto cleanup; return NULL;
} }
static int static int
virCPUppc64DriverGetModels(char ***models) virCPUppc64DriverGetModels(char ***models)
{ {
virCPUppc64MapPtr map; g_autoptr(virCPUppc64Map) map = NULL;
size_t i; size_t i;
int ret = -1;
if (!(map = ppc64LoadMap())) if (!(map = ppc64LoadMap()))
goto error; goto error;
@ -790,18 +775,14 @@ virCPUppc64DriverGetModels(char ***models)
(*models)[i] = g_strdup(map->models[i]->name); (*models)[i] = g_strdup(map->models[i]->name);
} }
ret = map->nmodels; return map->nmodels;
cleanup:
ppc64MapFree(map);
return ret;
error: error:
if (models) { if (models) {
g_strfreev(*models); g_strfreev(*models);
*models = NULL; *models = NULL;
} }
goto cleanup; return -1;
} }
struct cpuArchDriver cpuDriverPPC64 = { struct cpuArchDriver cpuDriverPPC64 = {