[libvirt] [PATCH 09/18] cpu: Don't skip CPU model name check in ppc64 driver

Jiri Denemark jdenemar at redhat.com
Thu Aug 6 07:48:00 UTC 2015


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




More information about the libvir-list mailing list