[RFC PATCH v11 01/29] KVM: Wrap kvm_gfn_range.pte in a per-action union
Sean Christopherson
seanjc at google.com
Wed Jul 19 15:39:09 UTC 2023
On Wed, Jul 19, 2023, Jarkko Sakkinen wrote:
> On Wed Jul 19, 2023 at 2:44 AM EEST, Sean Christopherson wrote:
> > /* Huge pages aren't expected to be modified without first being zapped. */
> > - WARN_ON(pte_huge(range->pte) || range->start + 1 != range->end);
> > + WARN_ON(pte_huge(range->arg.pte) || range->start + 1 != range->end);
>
> Not familiar with this code. Just checking whether whether instead
> pr_{warn,err}()
The "full" WARN is desirable, this is effecitvely an assert on the contract between
the primary MMU, generic KVM code, and x86's TDP MMU. The .change_pte() mmu_notifier
callback doesn't allow for hugepages, i.e. it's a (likely fatal) kernel bug if a
hugepage is encountered at this point. Ditto for the "start + 1 == end" check,
if that fails then generic KVM likely has a fatal bug.
> combined with return false would be a more graceful option?
The return value communicates whether or not a TLB flush is needed, not whether
or not the operation was successful, i.e. there is no way to cancel the unexpected
PTE change.
More information about the Linux-security-module-archive
mailing list