| Date | Wed, 1 Aug 2018 20:34:02 +0200 | From | Pavel Machek <> | Subject | Re: [PATCH 4.9 131/144] media: omap3isp: fix unbalanced dma_iommu_mapping |
| |
On Wed 2018-08-01 18:52:38, Greg Kroah-Hartman wrote: > 4.9-stable review patch. If anyone has any objections, please let me know.
How was this tested?
> From: Suman Anna <s-anna@ti.com> > > [ Upstream commit b7e1e6859fbf60519fd82d7120cee106a6019512 ] > > The OMAP3 ISP driver manages its MMU mappings through the IOMMU-aware > ARM DMA backend. The current code creates a dma_iommu_mapping and > attaches this to the ISP device, but never detaches the mapping in > either the probe failure paths or the driver remove path resulting > in an unbalanced mapping refcount and a memory leak. Fix this properly. > > Reported-by: Pavel Machek <pavel@ucw.cz> > Signed-off-by: Suman Anna <s-anna@ti.com> > Tested-by: Pavel Machek <pavel@ucw.cz>
Changelog implies I tested this, but I certainly did not test it in v4.9.
Pavel
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> > Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > --- > drivers/media/platform/omap3isp/isp.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > --- a/drivers/media/platform/omap3isp/isp.c > +++ b/drivers/media/platform/omap3isp/isp.c > @@ -1941,6 +1941,7 @@ error_csiphy: > > static void isp_detach_iommu(struct isp_device *isp) > { > + arm_iommu_detach_device(isp->dev); > arm_iommu_release_mapping(isp->mapping); > isp->mapping = NULL; > iommu_group_remove_device(isp->dev); > @@ -1974,8 +1975,7 @@ static int isp_attach_iommu(struct isp_d > mapping = arm_iommu_create_mapping(&platform_bus_type, SZ_1G, SZ_2G); > if (IS_ERR(mapping)) { > dev_err(isp->dev, "failed to create ARM IOMMU mapping\n"); > - ret = PTR_ERR(mapping); > - goto error; > + return PTR_ERR(mapping); > } > > isp->mapping = mapping; > @@ -1990,7 +1990,8 @@ static int isp_attach_iommu(struct isp_d > return 0; > > error: > - isp_detach_iommu(isp); > + arm_iommu_release_mapping(isp->mapping); > + isp->mapping = NULL; > return ret; > } > >
-- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html [unhandled content-type:application/pgp-signature] |