]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: x86: do not modify masked bits of shared MSRs
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 18 Nov 2019 17:23:00 +0000 (12:23 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 21 Nov 2019 08:59:22 +0000 (09:59 +0100)
commita957bf2ad82489df767390d1ba039985f5280fb7
tree4b7f02fa066172548866179eb34229c11c2a1e74
parentfae3b45e5eb5283066743f009bd85e72a8ee6716
KVM: x86: do not modify masked bits of shared MSRs

"Shared MSRs" are guest MSRs that are written to the host MSRs but
keep their value until the next return to userspace.  They support
a mask, so that some bits keep the host value, but this mask is
only used to skip an unnecessary MSR write and the value written
to the MSR is always the guest MSR.

Fix this and, while at it, do not update smsr->values[slot].curr if
for whatever reason the wrmsr fails.  This should only happen due to
reserved bits, so the value written to smsr->values[slot].curr
will not match when the user-return notifier and the host value will
always be restored.  However, it is untidy and in rare cases this
can actually avoid spurious WRMSRs on return to userspace.

Cc: stable@vger.kernel.org
Reviewed-by: Jim Mattson <jmattson@google.com>
Tested-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c