>>> On 16.12.15 at 22:24, <andrew.coop...@citrix.com> wrote:
> --- a/xen/arch/x86/cpu/amd.c
> +++ b/xen/arch/x86/cpu/amd.c
> @@ -203,7 +203,9 @@ static void __init noinline probe_masking_msrs(void)
>  void amd_ctxt_switch_levelling(const struct domain *nextd)
>  {
>       struct cpumasks *these_masks = &this_cpu(cpumasks);
> -     const struct cpumasks *masks = &cpumask_defaults;
> +     const struct cpumasks *masks =
> +            (nextd && is_pv_domain(nextd) && nextd->arch.pv_domain.masks)
> +            ? nextd->arch.pv_domain.masks : &cpumask_defaults;

Can nextd really ever be NULL here?

> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -578,6 +578,12 @@ int arch_domain_create(struct domain *d, unsigned int 
> domcr_flags,
>              goto fail;
>          clear_page(d->arch.pv_domain.gdt_ldt_l1tab);
>  
> +        d->arch.pv_domain.masks = xmalloc(struct cpumasks);
> +        if ( !d->arch.pv_domain.masks )
> +            goto fail;
> +        memcpy(d->arch.pv_domain.masks, &cpumask_defaults,
> +               sizeof(*d->arch.pv_domain.masks));

Structure assignment, to make the thing type safe?

Also there's a change missing to the cleanup code after the "fail"
label.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to