Re: [PATCH 4.9 131/144] media: omap3isp: fix unbalanced dma_iommu_mapping

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxx>
> 
> [ 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@xxxxxx>
> Signed-off-by: Suman Anna <s-anna@xxxxxx>
> Tested-by: Pavel Machek <pavel@xxxxxx>

Changelog implies I tested this, but I certainly did not test it in
v4.9.

								Pavel

> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>
> Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> ---
>  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

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux