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

From: Yang, Weijiang
Date: Fri Jan 05 2024 - 03:17:23 EST


On 1/5/2024 6:47 AM, Edgecombe, Rick P wrote:
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.

Ah, this is another unused variable after introduce fpu_guest_cfg.*, should be replaced by
fpu_guest_cfg.default_size. Thanks for caching it!