vfio iommu type1: Fix memory leak in vfio_iommu_type1_pin_pages
[ Upstream commit5.4-rM2-2.2.x-imx-squashed2e6cfd496f
] pfn is not added to pfn_list when vfio_add_to_pfn_list fails. vfio_unpin_page_external will exit directly without calling vfio_iova_put_vfio_pfn. This will lead to a memory leak. Fixes:a54eb55045
("vfio iommu type1: Add support for mediated devices") Signed-off-by: Xiaoyang Xu <xuxiaoyang2@huawei.com> [aw: simplified logic, add Fixes] Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
parent
f54d8a9e37
commit
b4035b3d64
|
@ -631,7 +631,8 @@ static int vfio_iommu_type1_pin_pages(void *iommu_data,
|
|||
|
||||
ret = vfio_add_to_pfn_list(dma, iova, phys_pfn[i]);
|
||||
if (ret) {
|
||||
vfio_unpin_page_external(dma, iova, do_accounting);
|
||||
if (put_pfn(phys_pfn[i], dma->prot) && do_accounting)
|
||||
vfio_lock_acct(dma, -1, true);
|
||||
goto pin_unwind;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue