From 99ce28bfce308bc0f78e1ca6b9aa063227b6ed29 Mon Sep 17 00:00:00 2001 From: Daniel Mentz Date: Fri, 14 Mar 2025 18:00:56 -0700 Subject: [PATCH] ANDROID: KVM: arm64: iommu: Avoid ref count leak when __pkvm_host_use_dma fails In kvm_iommu_map_pages, release the reference to the domain if we return early because __pkvm_host_use_dma failed. Bug: 401132481 Fixes: a737b7d0e721 ("ANDROID: KVM: arm64: iommu: Reduce the logic in generic code") Change-Id: Ib792425a726513f5a6b8198aa3d0208aa43b0502 Signed-off-by: Daniel Mentz Signed-off-by: Mostafa Saleh --- arch/arm64/kvm/hyp/nvhe/iommu/iommu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/hyp/nvhe/iommu/iommu.c b/arch/arm64/kvm/hyp/nvhe/iommu/iommu.c index ce968846dee5..55caabfae3c2 100644 --- a/arch/arm64/kvm/hyp/nvhe/iommu/iommu.c +++ b/arch/arm64/kvm/hyp/nvhe/iommu/iommu.c @@ -484,7 +484,7 @@ size_t kvm_iommu_map_pages(pkvm_handle_t domain_id, ret = __pkvm_use_dma(paddr, size, __get_vcpu()); if (ret) - return 0; + goto out_put_domain; kvm_iommu_ops->map_pages(domain, iova, paddr, pgsize, pgcount, prot, &total_mapped); @@ -497,6 +497,7 @@ size_t kvm_iommu_map_pages(pkvm_handle_t domain_id, if (pgcount) __pkvm_unuse_dma(paddr + total_mapped, pgcount * pgsize, __get_vcpu()); +out_put_domain: domain_put(domain); return total_mapped; }