|
@@ -1692,7 +1692,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(struct kvm_vcpu *vcpu,
|
|
unsigned bank_num = mcg_cap & 0xff, bank;
|
|
unsigned bank_num = mcg_cap & 0xff, bank;
|
|
|
|
|
|
r = -EINVAL;
|
|
r = -EINVAL;
|
|
- if (!bank_num)
|
|
|
|
|
|
+ if (!bank_num || bank_num >= KVM_MAX_MCE_BANKS)
|
|
goto out;
|
|
goto out;
|
|
if (mcg_cap & ~(KVM_MCE_CAP_SUPPORTED | 0xff | 0xff0000))
|
|
if (mcg_cap & ~(KVM_MCE_CAP_SUPPORTED | 0xff | 0xff0000))
|
|
goto out;
|
|
goto out;
|
|
@@ -4051,7 +4051,7 @@ static int save_guest_segment_descriptor(struct kvm_vcpu *vcpu, u16 selector,
|
|
return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu);
|
|
return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu);
|
|
}
|
|
}
|
|
|
|
|
|
-static u32 get_tss_base_addr(struct kvm_vcpu *vcpu,
|
|
|
|
|
|
+static gpa_t get_tss_base_addr(struct kvm_vcpu *vcpu,
|
|
struct desc_struct *seg_desc)
|
|
struct desc_struct *seg_desc)
|
|
{
|
|
{
|
|
u32 base_addr = get_desc_base(seg_desc);
|
|
u32 base_addr = get_desc_base(seg_desc);
|