On Fri, 31 Jan 2020 at 02:02, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > From: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> > > The KVM hypervisor may provide a guest with ability to defer remote TLB > flush when the remote VCPU is not running. When this feature is used, > the TLB flush will happen only when the remote VPCU is scheduled to run > again. This will avoid unnecessary (and expensive) IPIs. > > Under certain circumstances, when a guest initiates such deferred action, > the hypervisor may miss the request. It is also possible that the guest > may mistakenly assume that it has already marked remote VCPU as needing > a flush when in fact that request had already been processed by the > hypervisor. In both cases this will result in an invalid translation > being present in a vCPU, potentially allowing accesses to memory locations > in that guest's address space that should not be accessible. > > Note that only intra-guest memory is vulnerable. > > The attached patches address both of these problems: > 1. The first patch makes sure the hypervisor doesn't accidentally clear > guest's remote flush request > 2. The rest of the patches prevent the race between hypervisor > acknowledging a remote flush request and guest issuing a new one. Looks good, thanks for the patchset. Wanpeng