mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-20 21:04:40 +08:00
KVM: x86: move kvm_inject_gp up from kvm_set_xcr to callers
Push the injection of #GP up to the callers, so that they can just use kvm_complete_insn_gp. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
fd23800261
commit
bbefd4fc8f
@ -2357,11 +2357,8 @@ static int xsetbv_interception(struct vcpu_svm *svm)
|
||||
u64 new_bv = kvm_read_edx_eax(&svm->vcpu);
|
||||
u32 index = kvm_rcx_read(&svm->vcpu);
|
||||
|
||||
if (kvm_set_xcr(&svm->vcpu, index, new_bv) == 0) {
|
||||
return kvm_skip_emulated_instruction(&svm->vcpu);
|
||||
}
|
||||
|
||||
return 1;
|
||||
int err = kvm_set_xcr(&svm->vcpu, index, new_bv);
|
||||
return kvm_complete_insn_gp(&svm->vcpu, err);
|
||||
}
|
||||
|
||||
static int rdpru_interception(struct vcpu_svm *svm)
|
||||
|
@ -5223,9 +5223,8 @@ static int handle_xsetbv(struct kvm_vcpu *vcpu)
|
||||
u64 new_bv = kvm_read_edx_eax(vcpu);
|
||||
u32 index = kvm_rcx_read(vcpu);
|
||||
|
||||
if (kvm_set_xcr(vcpu, index, new_bv) == 0)
|
||||
return kvm_skip_emulated_instruction(vcpu);
|
||||
return 1;
|
||||
int err = kvm_set_xcr(vcpu, index, new_bv);
|
||||
return kvm_complete_insn_gp(vcpu, err);
|
||||
}
|
||||
|
||||
static int handle_apic_access(struct kvm_vcpu *vcpu)
|
||||
|
@ -986,12 +986,10 @@ static int __kvm_set_xcr(struct kvm_vcpu *vcpu, u32 index, u64 xcr)
|
||||
|
||||
int kvm_set_xcr(struct kvm_vcpu *vcpu, u32 index, u64 xcr)
|
||||
{
|
||||
if (static_call(kvm_x86_get_cpl)(vcpu) != 0 ||
|
||||
__kvm_set_xcr(vcpu, index, xcr)) {
|
||||
kvm_inject_gp(vcpu, 0);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
if (static_call(kvm_x86_get_cpl)(vcpu) == 0)
|
||||
return __kvm_set_xcr(vcpu, index, xcr);
|
||||
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvm_set_xcr);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user