aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@linux.alibaba.com>2021-11-18 19:08:02 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2021-12-08 04:25:05 -0500
commit3ab4ac877cfabd209d12cbd6af0aa02077bb778d (patch)
tree9638d82fdd80efbe376df249506b756bd4cd361b
parentKVM: VMX: Avoid to rdmsrl(MSR_IA32_SYSENTER_ESP) (diff)
downloadlinux-dev-3ab4ac877cfabd209d12cbd6af0aa02077bb778d.tar.xz
linux-dev-3ab4ac877cfabd209d12cbd6af0aa02077bb778d.zip
KVM: VMX: Update msr value after kvm_set_user_return_msr() succeeds
Aoid earlier modification. Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com> Message-Id: <20211118110814.2568-4-jiangshanlai@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--arch/x86/kvm/vmx/vmx.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 56c46a50d85a..73cb1322d7f1 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -602,15 +602,13 @@ static int vmx_set_guest_uret_msr(struct vcpu_vmx *vmx,
unsigned int slot = msr - vmx->guest_uret_msrs;
int ret = 0;
- u64 old_msr_data = msr->data;
- msr->data = data;
if (msr->load_into_hardware) {
preempt_disable();
- ret = kvm_set_user_return_msr(slot, msr->data, msr->mask);
+ ret = kvm_set_user_return_msr(slot, data, msr->mask);
preempt_enable();
- if (ret)
- msr->data = old_msr_data;
}
+ if (!ret)
+ msr->data = data;
return ret;
}