From: Sean Christopherson Date: Fri, 26 Jul 2024 23:51:10 +0000 (-0700) Subject: KVM: arm64: Release pfn, i.e. put page, if copying MTE tags hits ZONE_DEVICE X-Git-Tag: v6.12-rc1~219^2~2^2~6^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ae41d7dbaeb4f79134136cd65ad7015cf9ccf78a;p=thirdparty%2Flinux.git KVM: arm64: Release pfn, i.e. put page, if copying MTE tags hits ZONE_DEVICE Put the page reference acquired by gfn_to_pfn_prot() if kvm_vm_ioctl_mte_copy_tags() runs into ZONE_DEVICE memory. KVM's less- than-stellar heuristics for dealing with pfn-mapped memory means that KVM can get a page reference to ZONE_DEVICE memory. Fixes: f0376edb1ddc ("KVM: arm64: Add ioctl to fetch/store tags in a guest") Signed-off-by: Sean Christopherson Reviewed-by: Steven Price Reviewed-by: Catalin Marinas Link: https://lore.kernel.org/r/20240726235234.228822-2-seanjc@google.com Signed-off-by: Marc Zyngier --- diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c index 11098eb7eb44a..e1f0ff08836a3 100644 --- a/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c @@ -1059,6 +1059,7 @@ int kvm_vm_ioctl_mte_copy_tags(struct kvm *kvm, page = pfn_to_online_page(pfn); if (!page) { /* Reject ZONE_DEVICE memory */ + kvm_release_pfn_clean(pfn); ret = -EFAULT; goto out; }