KVM: x86: Assert that the emulator doesn't load CS with garbage in !RM
authorSean Christopherson <seanjc@google.com>
Thu, 16 Feb 2023 20:22:54 +0000 (12:22 -0800)
committerSean Christopherson <seanjc@google.com>
Thu, 23 Mar 2023 23:07:52 +0000 (16:07 -0700)
commit65966aaca18a5cbf42ac22234cb9cbbf60a4d33c
treeb4f226c6d7934cfc655e99bc89c15bfb20ed78fd
parent3d8f61bf8bcd69bcd397276d53aa18f7ca8347f9
KVM: x86: Assert that the emulator doesn't load CS with garbage in !RM

Yell loudly if KVM attempts to load CS outside of Real Mode without an
accompanying control transfer type, i.e. on X86_TRANSFER_NONE.  KVM uses
X86_TRANSFER_NONE when emulating IRET and exceptions/interrupts for Real
Mode, but IRET emulation for Protected Mode is non-existent.  WARN instead
of trying to pass in a less-wrong type, e.g. X86_TRANSFER_RET, as
emulating IRET goes even beyond emulating FAR RET (which KVM also doesn't
fully support).

Reported-by: Hou Wenlong <houwenlong.hwl@antgroup.com>
Link: https://lore.kernel.org/r/20230216202254.671772-1-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/emulate.c