Re: [PATCH v8 06/26] x86/fpu/xstate: Create guest fpstate with guest specific config

From: Edgecombe, Rick P
Date: Thu Jan 04 2024 - 17:47:36 EST


On Thu, 2023-12-21 at 09:02 -0500, Yang Weijiang wrote:
> +static struct fpstate *__fpu_alloc_init_guest_fpstate(struct
> fpu_guest *gfpu)
>  {
> +       bool compacted = cpu_feature_enabled(X86_FEATURE_XCOMPACTED);
> +       unsigned int gfpstate_size, size;
>         struct fpstate *fpstate;
> -       unsigned int size;
>  
> -       size = fpu_user_cfg.default_size + ALIGN(offsetof(struct
> fpstate, regs), 64);
> +       /*
> +        * fpu_guest_cfg.default_size is initialized to hold all
> enabled
> +        * xfeatures except the user dynamic xfeatures. If the user
> dynamic
> +        * xfeatures are enabled, the guest fpstate will be re-
> allocated to
> +        * hold all guest enabled xfeatures, so omit user dynamic
> xfeatures
> +        * here.
> +        */
> +       size = fpu_guest_cfg.default_size +
> +              ALIGN(offsetof(struct fpstate, regs), 64);
> +
>         fpstate = vzalloc(size);
>         if (!fpstate)
> -               return false;
> +               return NULL;
> +       /*
> +        * Initialize sizes and feature masks, use fpu_user_cfg.*
> +        * for user_* settings for compatibility of exiting uAPIs.
> +        */
> +       fpstate->size           = gfpstate_size;

gfpstate_size is used uninitialized.