Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8acb4207 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Gleb Natapov
Browse files

KVM: fix sil/dil/bpl/spl in the mod/rm fields



The x86-64 extended low-byte registers were fetched correctly from reg,
but not from mod/rm.

This fixes another bug in the boot of RHEL5.9 64-bit, but it is still
not enough.

Cc: <stable@vger.kernel.org> # 3.9
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarGleb Natapov <gleb@redhat.com>
parent 103f98ea
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1240,9 +1240,12 @@ static int decode_modrm(struct x86_emulate_ctxt *ctxt,
	ctxt->modrm_seg = VCPU_SREG_DS;

	if (ctxt->modrm_mod == 3) {
		int highbyte_regs = ctxt->rex_prefix == 0;

		op->type = OP_REG;
		op->bytes = (ctxt->d & ByteOp) ? 1 : ctxt->op_bytes;
		op->addr.reg = decode_register(ctxt, ctxt->modrm_rm, ctxt->d & ByteOp);
		op->addr.reg = decode_register(ctxt, ctxt->modrm_rm,
					       highbyte_regs && (ctxt->d & ByteOp));
		if (ctxt->d & Sse) {
			op->type = OP_XMM;
			op->bytes = 16;