|
@@ -2210,9 +2210,12 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
|
|
|
msr = find_msr_entry(vmx, msr_index);
|
|
msr = find_msr_entry(vmx, msr_index);
|
|
|
if (msr) {
|
|
if (msr) {
|
|
|
msr->data = data;
|
|
msr->data = data;
|
|
|
- if (msr - vmx->guest_msrs < vmx->save_nmsrs)
|
|
|
|
|
|
|
+ if (msr - vmx->guest_msrs < vmx->save_nmsrs) {
|
|
|
|
|
+ preempt_disable();
|
|
|
kvm_set_shared_msr(msr->index, msr->data,
|
|
kvm_set_shared_msr(msr->index, msr->data,
|
|
|
msr->mask);
|
|
msr->mask);
|
|
|
|
|
+ preempt_enable();
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
ret = kvm_set_msr_common(vcpu, msr_index, data);
|
|
ret = kvm_set_msr_common(vcpu, msr_index, data);
|