summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMichal Luczaj <mhal@rbox.co>2022-08-22 00:06:47 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-10-21 12:37:54 +0200
commitdd89f8571c25924ce6dfde82a68b531bda5996e6 (patch)
treee0191f04c76b6e1f46a1e3c349f76a19f80f0e11 /arch
parent7380a73621163b6ca8f97bbeb8892f06ec69bc12 (diff)
downloadlinux-stable-dd89f8571c25924ce6dfde82a68b531bda5996e6.tar.gz
linux-stable-dd89f8571c25924ce6dfde82a68b531bda5996e6.tar.bz2
linux-stable-dd89f8571c25924ce6dfde82a68b531bda5996e6.zip
KVM: x86/emulator: Fix handing of POP SS to correctly set interruptibility
commit 6aa5c47c351b22c21205c87977c84809cd015fcf upstream. The emulator checks the wrong variable while setting the CPU interruptibility state, the target segment is embedded in the instruction opcode, not the ModR/M register. Fix the condition. Signed-off-by: Michal Luczaj <mhal@rbox.co> Fixes: a5457e7bcf9a ("KVM: emulate: POP SS triggers a MOV SS shadow too") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/all/20220821215900.1419215-1-mhal@rbox.co Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/emulate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index aacb28c83e43..883e380e5801 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -1953,7 +1953,7 @@ static int em_pop_sreg(struct x86_emulate_ctxt *ctxt)
if (rc != X86EMUL_CONTINUE)
return rc;
- if (ctxt->modrm_reg == VCPU_SREG_SS)
+ if (seg == VCPU_SREG_SS)
ctxt->interruptibility = KVM_X86_SHADOW_INT_MOV_SS;
if (ctxt->op_bytes > 2)
rsp_increment(ctxt, ctxt->op_bytes - 2);