kvm: vmx: Nested VM-entry prereqs for event inj.
authorMarc Orr <marcorr@google.com>
Thu, 21 Jun 2018 00:21:29 +0000 (17:21 -0700)
committerRadim Krčmář <rkrcmar@redhat.com>
Fri, 22 Jun 2018 14:46:26 +0000 (16:46 +0200)
commit0447378a4a793da008451fad50bc0f93e9675ae6
tree05dabf4dafa3ec6b34f3e57e45f286970a43f263
parent5f9077cbae1de0e46386656cacdda4c472378640
kvm: vmx: Nested VM-entry prereqs for event inj.

This patch extends the checks done prior to a nested VM entry.
Specifically, it extends the check_vmentry_prereqs function with checks
for fields relevant to the VM-entry event injection information, as
described in the Intel SDM, volume 3.

This patch is motivated by a syzkaller bug, where a bad VM-entry
interruption information field is generated in the VMCS02, which causes
the nested VM launch to fail. Then, KVM fails to resume L1.

While KVM should be improved to correctly resume L1 execution after a
failed nested launch, this change is justified because the existing code
to resume L1 is flaky/ad-hoc and the test coverage for resuming L1 is
sparse.

Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Marc Orr <marcorr@google.com>
[Removed comment whose parts were describing previous revisions and the
 rest was obvious from function/variable naming. - Radim]
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
arch/x86/include/asm/vmx.h
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.h