|
@@ -312,11 +312,17 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
|
|
|
struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
|
|
|
unsigned int id)
|
|
|
{
|
|
|
- struct kvm_vcpu *vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
|
|
|
- int rc = -ENOMEM;
|
|
|
+ struct kvm_vcpu *vcpu;
|
|
|
+ int rc = -EINVAL;
|
|
|
+
|
|
|
+ if (id >= KVM_MAX_VCPUS)
|
|
|
+ goto out;
|
|
|
+
|
|
|
+ rc = -ENOMEM;
|
|
|
|
|
|
+ vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
|
|
|
if (!vcpu)
|
|
|
- goto out_nomem;
|
|
|
+ goto out;
|
|
|
|
|
|
vcpu->arch.sie_block = (struct kvm_s390_sie_block *)
|
|
|
get_zeroed_page(GFP_KERNEL);
|
|
@@ -352,7 +358,7 @@ out_free_sie_block:
|
|
|
free_page((unsigned long)(vcpu->arch.sie_block));
|
|
|
out_free_cpu:
|
|
|
kfree(vcpu);
|
|
|
-out_nomem:
|
|
|
+out:
|
|
|
return ERR_PTR(rc);
|
|
|
}
|
|
|
|