From: Sean Christopherson <seanjc@google.com>
To: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] KVM: x86/mmu: Don't create SPTEs for addresses that aren't mappable
Date: Fri, 20 Feb 2026 16:54:45 +0000 [thread overview]
Message-ID: <aZiR1cQxbDpRkQNn@google.com> (raw)
In-Reply-To: <c06466c636da3fc1dc14dc09260981a2554c7cc2.camel@intel.com>
+lists, because I'm confident there's no host attack.
On Thu, Feb 19, 2026, Edgecombe, Rick P wrote:
> On Wed, 2026-02-18 at 16:22 -0800, Sean Christopherson wrote:
> > In practice, the flaw is benign (other than the new WARN) as it only
> > affects guests that ignore guest.MAXPHYADDR (e.g. on CPUs with 52-bit
> > physical addresses but only 4-level paging) or guests being run by a
> > misbehaving userspace VMM (e.g. a VMM that ignored allow_smaller_maxphyaddr
> > or is pre-faulting bad addresses).
>
> I tried to look at whether this is true from a hurt-the-host perspective.
>
> Did you consider the potential mismatch between the GFN passed to
> kvm_flush_remote_tlbs_range() and the PTE's for different GFNs that actually got
> touched. For example in recover_huge_pages_range(), if it flushed the wrong
> range then the page table that got freed could still be in the intermediate
> translation caches?
I hadn't thought about this before you mentioned it, but I audited all code paths
and all paths that lead to kvm_flush_remote_tlbs_range() use a "sanitized" gfn,
i.e. KVM never emits a flush for the gfn reported by the fault. Which meshes with
a logical analysis as well: KVM only needs to flush when removing/changing an
entry, and so should always derive the to-be-flushed ranges using the gfn that
was used to make the change.
And the "bad" gfn can never have TLB entries, because KVM never creates mappings.
FWIW, even if KVM screwed up something like recover_huge_pages_range(), it wouldn't
hurt the _host_. Because from a host safety perspective, KVM x86 only needs to get
it right in three paths: kvm_flush_shadow_all(), __kvm_gmem_invalidate_begin(), and
kvm_mmu_notifier_invalidate_range_start().
> I'm not sure how this HV flush stuff actually works in practice, especially on
> those details. So not raising any red flags. Just thought maybe worth
> considering.
next prev parent reply other threads:[~2026-02-20 16:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-19 0:22 [PATCH] KVM: x86/mmu: Don't create SPTEs for addresses that aren't mappable Sean Christopherson
2026-02-19 0:23 ` Sean Christopherson
[not found] ` <c06466c636da3fc1dc14dc09260981a2554c7cc2.camel@intel.com>
2026-02-20 16:54 ` Sean Christopherson [this message]
2026-02-21 0:01 ` Edgecombe, Rick P
2026-02-21 0:07 ` Sean Christopherson
2026-02-21 0:08 ` Edgecombe, Rick P
2026-02-21 0:49 ` Sean Christopherson
2026-02-23 23:23 ` Edgecombe, Rick P
2026-02-24 1:49 ` Sean Christopherson
2026-02-23 11:12 ` Huang, Kai
2026-02-23 16:54 ` Sean Christopherson
2026-02-23 20:48 ` Huang, Kai
2026-02-23 21:25 ` Sean Christopherson
2026-02-23 21:44 ` Huang, Kai
2026-03-05 7:55 ` Yan Zhao
2026-03-06 22:22 ` Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aZiR1cQxbDpRkQNn@google.com \
--to=seanjc@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rick.p.edgecombe@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox