提交 ed8e4812 编写于 作者: P Paolo Bonzini

KVM: x86: fix size of x86_fpu_cache objects

The memory allocation in b666a4b6 ("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: NPaolo Bonzini <pbonzini@redhat.com>
上级 cfdfaf4a
......@@ -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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册