summaryrefslogtreecommitdiff
path: root/arch/x86/kvm/x86.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2018-12-21 11:25:59 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2018-12-21 11:28:19 +0100
commited8e48122728acfaf7bfa904cba034d83905b43a (patch)
tree4a3dfa3927b264c1604febdf428cc1d7054f6f11 /arch/x86/kvm/x86.c
parentcfdfaf4a86406f8eff7901de09f4910341eb9e31 (diff)
downloadlwn-ed8e48122728acfaf7bfa904cba034d83905b43a.tar.gz
lwn-ed8e48122728acfaf7bfa904cba034d83905b43a.zip
KVM: x86: fix size of x86_fpu_cache objects
The memory allocation in b666a4b69739 ("kvm: x86: Dynamically allocate guest_fpu", 2018-11-06) is wrong, there are other members in struct fpu before the fpregs_state union and the patch should be doing something similar to the code in fpu__init_task_struct_size. It's enough to run a guest and then rmmod kvm to see slub errors which are actually caused by memory corruption. For now let's revert it to sizeof(struct fpu), which is conservative. I have plans to move fsave/fxsave/xsave directly in KVM, without using the kernel FPU helpers, and once it's done, the size of the object in the cache will be something like kvm_xstate_size. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r--arch/x86/kvm/x86.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 4f786fcc620e..70faa3cdc4dc 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -6867,7 +6867,7 @@ int kvm_arch_init(void *opaque)
}
r = -ENOMEM;
- x86_fpu_cache = kmem_cache_create("x86_fpu", fpu_kernel_xstate_size,
+ x86_fpu_cache = kmem_cache_create("x86_fpu", sizeof(struct fpu),
__alignof__(struct fpu), SLAB_ACCOUNT,
NULL);
if (!x86_fpu_cache) {