On Tue, Aug 04, 2015 at 11:38:00 +0200, Andrea Bolognani wrote: > ppc64Compute(), called by cpuNodeData(), is used not only to retrieve > the driver-specific data associated to a guest CPU definition, but > also to check whether said guest CPU is compatible with the host CPU. > > If the user is not interested in the CPU data, it's perfectly fine > to pass a NULL pointer instead of a return location, and the > compatibility data returned should not be affected by this. One of > the checks, specifically the one on CPU model name, was however > only performed if the return location was non-NULL. > --- > src/cpu/cpu_ppc64.c | 31 +++++++++++++++---------------- > 1 file changed, 15 insertions(+), 16 deletions(-) > > diff --git a/src/cpu/cpu_ppc64.c b/src/cpu/cpu_ppc64.c > index 20c68ca..633515f 100644 > --- a/src/cpu/cpu_ppc64.c > +++ b/src/cpu/cpu_ppc64.c > @@ -418,26 +418,25 @@ ppc64Compute(virCPUDefPtr host, > !(guest_model = ppc64ModelFromCPU(cpu, map))) > goto cleanup; > > - if (guestData) { > - if (cpu->type == VIR_CPU_TYPE_GUEST && > - cpu->match == VIR_CPU_MATCH_STRICT && > - STRNEQ(guest_model->name, host_model->name)) { > - VIR_DEBUG("host CPU model does not match required CPU model %s", > - guest_model->name); > - if (message && > - virAsprintf(message, > - _("host CPU model does not match required " > - "CPU model %s"), > - guest_model->name) < 0) > - goto cleanup; > - > - ret = VIR_CPU_COMPARE_INCOMPATIBLE; > + if (cpu->type == VIR_CPU_TYPE_GUEST && > + cpu->match == VIR_CPU_MATCH_STRICT && > + STRNEQ(guest_model->name, host_model->name)) { > + VIR_DEBUG("host CPU model does not match required CPU model %s", > + guest_model->name); > + if (message && > + virAsprintf(message, > + _("host CPU model does not match required " > + "CPU model %s"), > + guest_model->name) < 0) > goto cleanup; > - } > > + ret = VIR_CPU_COMPARE_INCOMPATIBLE; > + goto cleanup; > + } > + > + if (guestData) > if (!(*guestData = ppc64MakeCPUData(arch, &guest_model->data))) > goto cleanup; I would probably simplify this as if (guestData && !(*guestData = ppc64MakeCPUData(arch, &guest_model->data))) goto cleanup; but not a big deal. ACK Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list