]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: x86: fix overlap between SPTE_MMIO_MASK and generation
authorPaolo Bonzini <pbonzini@redhat.com>
Sat, 18 Jan 2020 19:09:03 +0000 (20:09 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 23 Jan 2020 08:50:34 +0000 (09:50 +0100)
commit771b4bc6b242893535179a6ca956eaa541c8aadf
tree801e6a751937b26e8a7d051ad622f99cd2fd5ef5
parentb1c7eae39ee5d2de1c7e9274860536c386f1eb80
KVM: x86: fix overlap between SPTE_MMIO_MASK and generation

The SPTE_MMIO_MASK overlaps with the bits used to track MMIO
generation number.  A high enough generation number would overwrite the
SPTE_SPECIAL_MASK region and cause the MMIO SPTE to be misinterpreted.

Likewise, setting bits 52 and 53 would also cause an incorrect generation
number to be read from the PTE, though this was partially mitigated by the
(useless if it weren't for the bug) removal of SPTE_SPECIAL_MASK from
the spte in get_mmio_spte_generation.  Drop that removal, and replace
it with a compile-time assertion.

Fixes: d1563a373db1 ("KVM: x86: assign two bits to track SPTE kinds")
Reported-by: Ben Gardon <bgardon@google.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/mmu.c