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:44:17 +0200 |
| commit | 1fcca1260c6e74e2279661511cdaa0aa232e4f7e (patch) | |
| tree | 4dbfc342dc78bb23ed1d96a34f77b16824cbf227 | |
| parent | 97e1044e79c5d6bdbc435e33980f52e6e1f5d65f (diff) | |
| download | linux-stable-1fcca1260c6e74e2279661511cdaa0aa232e4f7e.tar.gz linux-stable-1fcca1260c6e74e2279661511cdaa0aa232e4f7e.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 0d38dc72dfc6..403a63548351 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -1444,6 +1444,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)) { |
