diff options
| author | Ard Biesheuvel <ardb@kernel.org> | 2026-06-04 17:11:56 +0200 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-07-04 13:45:03 +0200 |
| commit | 8ead1735811967a50dfe8b0ee0a2f19c5ba4380b (patch) | |
| tree | 737cf229d6557a49b479d9dbcae2499577a64de4 | |
| parent | dcb7416212e6bad951b0706d7fe4446a92fd966f (diff) | |
| download | linux-8ead1735811967a50dfe8b0ee0a2f19c5ba4380b.tar.gz linux-8ead1735811967a50dfe8b0ee0a2f19c5ba4380b.zip | |
KVM: arm64: Omit tag sync on stage-2 mappings of the zero page
commit 2986a625740599fe6e7635b0586fed2a95bcd1f7 upstream.
Commit
f620d66af316 ("arm64: mte: Do not flag the zero page as PG_mte_tagged")
removed the PG_mte_tagged flag from the zero page, but missed a KVM code
path that may set this flag on the zero page when it is used in a
stage-2 CoW mapping of anonymous memory.
So disregard the zero page explicitly in sanitise_mte_tags().
Fixes: f620d66af316 ("arm64: mte: Do not flag the zero page as PG_mte_tagged")
Cc: stable@vger.kernel.org # 5.10.x
Suggested-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | arch/arm64/kvm/mmu.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 4da9281312eb..6e95514d5a76 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -1479,6 +1479,11 @@ static void sanitise_mte_tags(struct kvm *kvm, kvm_pfn_t pfn, if (!kvm_has_mte(kvm)) return; + if (is_zero_pfn(pfn)) { + WARN_ON_ONCE(nr_pages != 1); + return; + } + if (folio_test_hugetlb(folio)) { /* Hugetlb has MTE flags set on head page only */ if (folio_try_hugetlb_mte_tagging(folio)) { |
