From: Robert Hoo <robert...@linux.intel.com>

[ Upstream commit a9e2e0ae686094571378c72d8146b5a1a92d0652 ]

Per Intel's SDM, RDPID takes a #UD if it is unsupported, which is more or
less what KVM is emulating when MSR_TSC_AUX is not available.  In fact,
there are no scenarios in which RDPID is supposed to #GP.

Fixes: fb6d4d340e ("KVM: x86: emulate RDPID")
Signed-off-by: Robert Hoo <robert...@linux.intel.com>
Message-Id: <1598581422-76264-1-git-send-email-robert...@linux.intel.com>
Reviewed-by: Jim Mattson <jmatt...@google.com>
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 arch/x86/kvm/emulate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index d0e2825ae6174..571cb8657e53e 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -3594,7 +3594,7 @@ static int em_rdpid(struct x86_emulate_ctxt *ctxt)
        u64 tsc_aux = 0;
 
        if (ctxt->ops->get_msr(ctxt, MSR_TSC_AUX, &tsc_aux))
-               return emulate_gp(ctxt, 0);
+               return emulate_ud(ctxt);
        ctxt->dst.val = tsc_aux;
        return X86EMUL_CONTINUE;
 }
-- 
2.25.1



Reply via email to