mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +00:00
KVM: x86: Protect x86_decode_insn from Spectre-v1/L1TF attacks
commit3c9053a2caupstream. This fixes a Spectre-v1/L1TF vulnerability in x86_decode_insn(). kvm_emulate_instruction() (an ancestor of x86_decode_insn()) is an exported symbol, so KVM should treat it conservatively from a security perspective. Fixes:045a282ca4("KVM: emulator: implement fninit, fnstsw, fnstcw") Signed-off-by: Nick Finco <nifi@google.com> Signed-off-by: Marios Pomonis <pomonis@google.com> Reviewed-by: Andrew Honig <ahonig@google.com> Cc: stable@vger.kernel.org Reviewed-by: Jim Mattson <jmattson@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
63d5ec6e4f
commit
bb9a9b51e3
@@ -5315,10 +5315,15 @@ done_prefixes:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Escape:
|
case Escape:
|
||||||
if (ctxt->modrm > 0xbf)
|
if (ctxt->modrm > 0xbf) {
|
||||||
opcode = opcode.u.esc->high[ctxt->modrm - 0xc0];
|
size_t size = ARRAY_SIZE(opcode.u.esc->high);
|
||||||
else
|
u32 index = array_index_nospec(
|
||||||
|
ctxt->modrm - 0xc0, size);
|
||||||
|
|
||||||
|
opcode = opcode.u.esc->high[index];
|
||||||
|
} else {
|
||||||
opcode = opcode.u.esc->op[(ctxt->modrm >> 3) & 7];
|
opcode = opcode.u.esc->op[(ctxt->modrm >> 3) & 7];
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case InstrDual:
|
case InstrDual:
|
||||||
if ((ctxt->modrm >> 6) == 3)
|
if ((ctxt->modrm >> 6) == 3)
|
||||||
|
|||||||
Reference in New Issue
Block a user