|
@@ -4029,8 +4029,12 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
|
|
|
/* A kmem cache lets us meet the alignment requirements of fx_save. */
|
|
|
if (!vcpu_align)
|
|
|
vcpu_align = __alignof__(struct kvm_vcpu);
|
|
|
- kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
|
|
|
- SLAB_ACCOUNT, NULL);
|
|
|
+ kvm_vcpu_cache =
|
|
|
+ kmem_cache_create_usercopy("kvm_vcpu", vcpu_size, vcpu_align,
|
|
|
+ SLAB_ACCOUNT,
|
|
|
+ offsetof(struct kvm_vcpu, arch),
|
|
|
+ sizeof_field(struct kvm_vcpu, arch),
|
|
|
+ NULL);
|
|
|
if (!kvm_vcpu_cache) {
|
|
|
r = -ENOMEM;
|
|
|
goto out_free_3;
|