Messages in this thread | | | From | Chunyan Zhang <> | Date | Wed, 30 Nov 2022 17:02:11 +0800 | Subject | Re: [PATCH v3 08/20] iommu/sprd: Remove detach_dev callback |
| |
On Tue, 29 Nov 2022 at 11:35, Tian, Kevin <kevin.tian@intel.com> wrote: > > > From: Lu Baolu <baolu.lu@linux.intel.com> > > Sent: Monday, November 28, 2022 2:47 PM > > > > The IOMMU driver supports default domain, so the detach_dev op will never > > be called. Remove it to avoid dead code. > > > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > > --- > > drivers/iommu/sprd-iommu.c | 16 ---------------- > > 1 file changed, 16 deletions(-) > > > > diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c > > index 219bfa11f7f4..ae94d74b73f4 100644 > > --- a/drivers/iommu/sprd-iommu.c > > +++ b/drivers/iommu/sprd-iommu.c > > @@ -255,21 +255,6 @@ static int sprd_iommu_attach_device(struct > > iommu_domain *domain, > > return 0; > > } > > > > -static void sprd_iommu_detach_device(struct iommu_domain *domain, > > - struct device *dev) > > -{ > > - struct sprd_iommu_domain *dom = to_sprd_domain(domain); > > - struct sprd_iommu_device *sdev = dom->sdev; > > - size_t pgt_size = sprd_iommu_pgt_size(domain); > > - > > - if (!sdev) > > - return; > > - > > - dma_free_coherent(sdev->dev, pgt_size, dom->pgt_va, dom- > > >pgt_pa); > > - sprd_iommu_hw_en(sdev, false); > > - dom->sdev = NULL; > > -} > > - > > Looks this reveals a bug in this driver (not caused by this removal). > > sprd_iommu_attach_device() doesn't check whether the device has > been already attached to a domain and do auto detach. > > It's written in a way that .detach_dev() must be called to free the > dma buffer but ignores the fact that it's not called when default > domain support is claimed. > > Then the dma buffer allocated for the previous domain was left > unhandled, causing memory leak.
I'll look into the issue, thanks for pointing this out.
Chunyan
| |