Re: [PATCH v3 04/10] x86/fpu/xstate: Correct guest fpstate size calculation

From: Chang S. Bae
Date: Sun Mar 09 2025 - 18:06:37 EST


On 3/7/2025 6:49 PM, Chao Gao wrote:
On Fri, Mar 07, 2025 at 01:37:15PM -0800, Chang S. Bae wrote:
On 3/7/2025 8:41 AM, Chao Gao wrote:

diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index 6166a928d3f5..adc34914634e 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -218,7 +218,7 @@ bool fpu_alloc_guest_fpstate(struct fpu_guest *gfpu)
struct fpstate *fpstate;
unsigned int size;
- size = fpu_user_cfg.default_size + ALIGN(offsetof(struct fpstate, regs), 64);
+ size = fpu_kernel_cfg.default_size + ALIGN(offsetof(struct fpstate, regs), 64);
fpstate = vzalloc(size);
if (!fpstate)
return false;

BTW, did you ever base this series on the tip/master branch? The fix has
already been merged there:

1937e18cc3cf ("x86/fpu: Fix guest FPU state buffer allocation size")

Thanks for the information. I will remove this patch.

But, I think there is a fallout that someone should follow up:

The merged patch ensures size consistency between fpu_alloc_guest_fpstate() and fpstate_realloc(), maintaining a consistent reference to the kernel buffer size. However, within fpu_alloc_guest_fpstate(), fpu_guest->xfeatures should also be adjusted accordingly for consistency. Instead of referencing fpu_user_cfg, it should reference fpu_kernel_cfg.

Thanks,
CHang