From: Nadav Amit Date: Thu, 11 Dec 2014 11:27:14 +0000 (+0100) Subject: KVM: x86: em_ret_far overrides cpl X-Git-Tag: v3.19-rc1~36^2~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=ab646f54f4fd1a8b9671b8707f0739fdd28ce2b1;p=~emulex%2Finfiniband.git KVM: x86: em_ret_far overrides cpl commit d50eaa18039b ("KVM: x86: Perform limit checks when assigning EIP") mistakenly used zero as cpl on em_ret_far. Use the actual one. Fixes: d50eaa18039b8b848c2285478d0775335ad5e930 Cc: stable@vger.kernel.org Signed-off-by: Nadav Amit Signed-off-by: Paolo Bonzini --- diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index a8fcec6b706..9715d6ea7d7 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2130,7 +2130,7 @@ static int em_ret_far(struct x86_emulate_ctxt *ctxt) /* Outer-privilege level return is not implemented */ if (ctxt->mode >= X86EMUL_MODE_PROT16 && (cs & 3) > cpl) return X86EMUL_UNHANDLEABLE; - rc = __load_segment_descriptor(ctxt, (u16)cs, VCPU_SREG_CS, 0, false, + rc = __load_segment_descriptor(ctxt, (u16)cs, VCPU_SREG_CS, cpl, false, &new_desc); if (rc != X86EMUL_CONTINUE) return rc;