[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180801183402.GA26087@amd>
Date: Wed, 1 Aug 2018 20:34:02 +0200
From: Pavel Machek <pavel@....cz>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: linux-kernel@...r.kernel.org, stable@...r.kernel.org,
Suman Anna <s-anna@...com>,
Laurent Pinchart <laurent.pinchart@...asonboard.com>,
Sakari Ailus <sakari.ailus@...ux.intel.com>,
Mauro Carvalho Chehab <mchehab@...pensource.com>,
Sasha Levin <alexander.levin@...rosoft.com>
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@...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@....cz>
> Signed-off-by: Suman Anna <s-anna@...com>
> Tested-by: Pavel Machek <pavel@....cz>
Changelog implies I tested this, but I certainly did not test it in
v4.9.
Pavel
> Reviewed-by: Laurent Pinchart <laurent.pinchart@...asonboard.com>
> Signed-off-by: Sakari Ailus <sakari.ailus@...ux.intel.com>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@...pensource.com>
> Signed-off-by: Sasha Levin <alexander.levin@...rosoft.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.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
Download attachment "signature.asc" of type "application/pgp-signature" (182 bytes)
Powered by blists - more mailing lists