Re: [PATCH v2] media: omap3isp: fix unbalanced dma_iommu_mapping

2018-04-11 Thread Sakari Ailus
On Mon, Mar 26, 2018 at 11:40:58AM -0500, Suman Anna wrote:
> Hi Mauro,
> 
> On 03/21/2018 05:26 AM, Laurent Pinchart wrote:
> > Hi Suman,
> > 
> > Thank you for the patch.
> > 
> > On Wednesday, 14 March 2018 17:41:36 EET Suman Anna wrote:
> >> 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 
> >> Signed-off-by: Suman Anna 
> >> Acked-by: Sakari Ailus 
> > 
> > Reviewed-by: Laurent Pinchart 
> 
> I don't see this patch in -next yet, can you pick up this patch at your
> earliest?

Here:



-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi


Re: [PATCH v2] media: omap3isp: fix unbalanced dma_iommu_mapping

2018-03-26 Thread Suman Anna
Hi Mauro,

On 03/21/2018 05:26 AM, Laurent Pinchart wrote:
> Hi Suman,
> 
> Thank you for the patch.
> 
> On Wednesday, 14 March 2018 17:41:36 EET Suman Anna wrote:
>> 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 
>> Signed-off-by: Suman Anna 
>> Acked-by: Sakari Ailus 
> 
> Reviewed-by: Laurent Pinchart 

I don't see this patch in -next yet, can you pick up this patch at your
earliest?

Thanks,
Suman

> 
>> ---
>> v2 Changes:
>>  - Dropped the error_attach label, and returned directly from the
>>first error path (comments from Sakari)
>>  - Added Sakari's Acked-by
>> v1: https://patchwork.kernel.org/patch/10276759/
>>
>> Pavel,
>> I dropped your Tested-by from v2 since I modified the patch, can you
>> recheck the new patch again? Thanks.
>>
>> regards
>> Suman
>>
>>  drivers/media/platform/omap3isp/isp.c | 7 ---
>>  1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/media/platform/omap3isp/isp.c
>> b/drivers/media/platform/omap3isp/isp.c index 8eb000e3d8fd..f2db5128d786
>> 100644
>> --- a/drivers/media/platform/omap3isp/isp.c
>> +++ b/drivers/media/platform/omap3isp/isp.c
>> @@ -1945,6 +1945,7 @@ static int isp_initialize_modules(struct isp_device
>> *isp)
>>
>>  static void isp_detach_iommu(struct isp_device *isp)
>>  {
>> +arm_iommu_detach_device(isp->dev);
>>  arm_iommu_release_mapping(isp->mapping);
>>  isp->mapping = NULL;
>>  }
>> @@ -1961,8 +1962,7 @@ static int isp_attach_iommu(struct isp_device *isp)
>>  mapping = arm_iommu_create_mapping(_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;
>> @@ -1977,7 +1977,8 @@ static int isp_attach_iommu(struct isp_device *isp)
>>  return 0;
>>
>>  error:
>> -isp_detach_iommu(isp);
>> +arm_iommu_release_mapping(isp->mapping);
>> +isp->mapping = NULL;
>>  return ret;
>>  }
> 



Re: [PATCH v2] media: omap3isp: fix unbalanced dma_iommu_mapping

2018-03-21 Thread Laurent Pinchart
Hi Suman,

Thank you for the patch.

On Wednesday, 14 March 2018 17:41:36 EET Suman Anna wrote:
> 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 
> Signed-off-by: Suman Anna 
> Acked-by: Sakari Ailus 

Reviewed-by: Laurent Pinchart 

> ---
> v2 Changes:
>  - Dropped the error_attach label, and returned directly from the
>first error path (comments from Sakari)
>  - Added Sakari's Acked-by
> v1: https://patchwork.kernel.org/patch/10276759/
> 
> Pavel,
> I dropped your Tested-by from v2 since I modified the patch, can you
> recheck the new patch again? Thanks.
> 
> regards
> Suman
> 
>  drivers/media/platform/omap3isp/isp.c | 7 ---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/media/platform/omap3isp/isp.c
> b/drivers/media/platform/omap3isp/isp.c index 8eb000e3d8fd..f2db5128d786
> 100644
> --- a/drivers/media/platform/omap3isp/isp.c
> +++ b/drivers/media/platform/omap3isp/isp.c
> @@ -1945,6 +1945,7 @@ static int isp_initialize_modules(struct isp_device
> *isp)
> 
>  static void isp_detach_iommu(struct isp_device *isp)
>  {
> + arm_iommu_detach_device(isp->dev);
>   arm_iommu_release_mapping(isp->mapping);
>   isp->mapping = NULL;
>  }
> @@ -1961,8 +1962,7 @@ static int isp_attach_iommu(struct isp_device *isp)
>   mapping = arm_iommu_create_mapping(_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;
> @@ -1977,7 +1977,8 @@ static int isp_attach_iommu(struct isp_device *isp)
>   return 0;
> 
>  error:
> - isp_detach_iommu(isp);
> + arm_iommu_release_mapping(isp->mapping);
> + isp->mapping = NULL;
>   return ret;
>  }

-- 
Regards,

Laurent Pinchart



Re: [PATCH v2] media: omap3isp: fix unbalanced dma_iommu_mapping

2018-03-15 Thread Pavel Machek
On Wed 2018-03-14 10:41:36, Suman Anna wrote:
> 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 
> Signed-off-by: Suman Anna 
> Acked-by: Sakari Ailus 
> ---
> v2 Changes:
>  - Dropped the error_attach label, and returned directly from the
>first error path (comments from Sakari)
>  - Added Sakari's Acked-by
> v1: https://patchwork.kernel.org/patch/10276759/
> 
> Pavel,
> I dropped your Tested-by from v2 since I modified the patch, can you
> recheck the new patch again? Thanks.

I updated to new -next version and re-ran the test.

Tested-by: Pavel Machek 
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


signature.asc
Description: Digital signature


[PATCH v2] media: omap3isp: fix unbalanced dma_iommu_mapping

2018-03-14 Thread Suman Anna
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 
Signed-off-by: Suman Anna 
Acked-by: Sakari Ailus 
---
v2 Changes:
 - Dropped the error_attach label, and returned directly from the
   first error path (comments from Sakari)
 - Added Sakari's Acked-by
v1: https://patchwork.kernel.org/patch/10276759/

Pavel,
I dropped your Tested-by from v2 since I modified the patch, can you
recheck the new patch again? Thanks.

regards
Suman

 drivers/media/platform/omap3isp/isp.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/omap3isp/isp.c 
b/drivers/media/platform/omap3isp/isp.c
index 8eb000e3d8fd..f2db5128d786 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -1945,6 +1945,7 @@ static int isp_initialize_modules(struct isp_device *isp)
 
 static void isp_detach_iommu(struct isp_device *isp)
 {
+   arm_iommu_detach_device(isp->dev);
arm_iommu_release_mapping(isp->mapping);
isp->mapping = NULL;
 }
@@ -1961,8 +1962,7 @@ static int isp_attach_iommu(struct isp_device *isp)
mapping = arm_iommu_create_mapping(_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;
@@ -1977,7 +1977,8 @@ static int isp_attach_iommu(struct isp_device *isp)
return 0;
 
 error:
-   isp_detach_iommu(isp);
+   arm_iommu_release_mapping(isp->mapping);
+   isp->mapping = NULL;
return ret;
 }
 
-- 
2.16.2