• Sean Christopherson's avatar
    KVM: x86/mmu: Don't install TDP MMU SPTE if SP has unexpected level · 50a9ac25
    Sean Christopherson authored
    Don't install a leaf TDP MMU SPTE if the parent page's level doesn't
    match the target level of the fault, and instead have the vCPU retry the
    faulting instruction after warning.  Continuing on is completely
    unnecessary as the absolute worst case scenario of retrying is DoSing
    the vCPU, whereas continuing on all but guarantees bigger explosions, e.g.
    
      ------------[ cut here ]------------
      kernel BUG at arch/x86/kvm/mmu/tdp_mmu.c:559!
      invalid opcode: 0000 [#1] SMP
      CPU: 1 PID: 1025 Comm: nx_huge_pages_t Tainted: G        W          6.1.0-rc4+ #64
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:__handle_changed_spte.cold+0x95/0x9c
      RSP: 0018:ffffc9000072faf8 EFLAGS: 00010246
      RAX: 00000000000000c1 RBX: ffffc90000731000 RCX: 0000000000000027
      RDX: 0000000000000000 RSI: 00000000ffffdfff RDI: ffff888277c5b4c8
      RBP: 0600000112400bf3 R08: ffff888277c5b4c0 R09: ffffc9000072f9a0
      R10: 0000000000000001 R11: 0000000000000001 R12: 06000001126009f3
      R13: 0000000000000002 R14: 0000000012600901 R15: 0000000012400b01
      FS:  00007fba9f853740(0000) GS:ffff888277c40000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 000000010aa7a003 CR4: 0000000000172ea0
      Call Trace:
       <TASK>
       kvm_tdp_mmu_map+0x3b0/0x510
       kvm_tdp_page_fault+0x10c/0x130
       kvm_mmu_page_fault+0x103/0x680
       vmx_handle_exit+0x132/0x5a0 [kvm_intel]
       vcpu_enter_guest+0x60c/0x16f0
       kvm_arch_vcpu_ioctl_run+0x1e2/0x9d0
       kvm_vcpu_ioctl+0x271/0x660
       __x64_sys_ioctl+0x80/0xb0
       do_syscall_64+0x2b/0x50
       entry_SYSCALL_64_after_hwframe+0x46/0xb0
       </TASK>
      Modules linked in: kvm_intel
      ---[ end trace 0000000000000000 ]---
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20221213033030.83345-5-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    50a9ac25
tdp_mmu.c 57.5 KB