Message ID | c8ee5692-bf71-a9d7-8607-50adc9f0e9f1@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi! > >>> Well, there certainly seems to be an obvious bug wherein > >>> isp_detach_iommu() just releases the mapping directly without calling > >>> arm_iommu_detach_device() to balance the equivalent attach. That can't > >>> be helping. > >> > >> Indeed, I have been able to reproduce the same warning using a > >> standalone test module, and the missing arm_iommu_detach_device() is > >> causing the warning after probe (during failure path) or during > >> remove. > > > > Ok do you have an idea how to fix the isp error paths? Untested patch > > would be fine... But it seems that you know what needs to be fixed and > > I don't. > > > > OK, see if the following fixes the issue for you, only build tested. Word-wrapped, so I applied by hand. And yes, the oops at boot is gone. Thanks! (Camera still does not work in -next... kills system. Oh well. Lets debug that some other day.) > 8< --------------------- > >From bac9a48fb646dc51f2030d676a0dbe3298c3b134 Mon Sep 17 00:00:00 2001 > From: Suman Anna <s-anna@ti.com> > Date: Fri, 9 Mar 2018 16:39:59 -0600 > Subject: [PATCH] media: omap3isp: fix unbalanced dma_iommu_mapping > > 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> Pavel
On 03/10/2018 05:26 AM, Pavel Machek wrote: > Hi! > >>>>> Well, there certainly seems to be an obvious bug wherein >>>>> isp_detach_iommu() just releases the mapping directly without calling >>>>> arm_iommu_detach_device() to balance the equivalent attach. That can't >>>>> be helping. >>>> >>>> Indeed, I have been able to reproduce the same warning using a >>>> standalone test module, and the missing arm_iommu_detach_device() is >>>> causing the warning after probe (during failure path) or during >>>> remove. >>> >>> Ok do you have an idea how to fix the isp error paths? Untested patch >>> would be fine... But it seems that you know what needs to be fixed and >>> I don't. >>> >> >> OK, see if the following fixes the issue for you, only build tested. > > Word-wrapped, so I applied by hand. And yes, the oops at boot is > gone. Thanks! Sorry about that, have to check my mail settings. Anyway will post the patch again, glad that it fixed your issue. regards Suman > > (Camera still does not work in -next... kills system. Oh well. Lets > debug that some other day.) > >> 8< --------------------- >> >From bac9a48fb646dc51f2030d676a0dbe3298c3b134 Mon Sep 17 00:00:00 2001 >> From: Suman Anna <s-anna@ti.com> >> Date: Fri, 9 Mar 2018 16:39:59 -0600 >> Subject: [PATCH] media: omap3isp: fix unbalanced dma_iommu_mapping >> >> 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> > Pavel >
Hi! > >> > >> OK, see if the following fixes the issue for you, only build tested. > > > > Word-wrapped, so I applied by hand. And yes, the oops at boot is > > gone. Thanks! > > Sorry about that, have to check my mail settings. Anyway will post the > patch again, glad that it fixed your issue. Any news here? AFAICT the bug creeped into v4.17-rcX in the meantime... Pavel > regards > Suman > > > > > (Camera still does not work in -next... kills system. Oh well. Lets > > debug that some other day.) > > > >> 8< --------------------- > >> >From bac9a48fb646dc51f2030d676a0dbe3298c3b134 Mon Sep 17 00:00:00 2001 > >> From: Suman Anna <s-anna@ti.com> > >> Date: Fri, 9 Mar 2018 16:39:59 -0600 > >> Subject: [PATCH] media: omap3isp: fix unbalanced dma_iommu_mapping > >> > >> 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> > > Pavel > >
On 05/24/2018 06:05 AM, Pavel Machek wrote: > Hi! > >>>> >>>> OK, see if the following fixes the issue for you, only build tested. >>> >>> Word-wrapped, so I applied by hand. And yes, the oops at boot is >>> gone. Thanks! >> >> Sorry about that, have to check my mail settings. Anyway will post the >> patch again, glad that it fixed your issue. > > Any news here? AFAICT the bug creeped into v4.17-rcX in the > meantime... > The patch has been on linux-next for sometime now. regards Suman > Pavel > >> regards >> Suman >> >>> >>> (Camera still does not work in -next... kills system. Oh well. Lets >>> debug that some other day.) >>> >>>> 8< --------------------- >>>> >From bac9a48fb646dc51f2030d676a0dbe3298c3b134 Mon Sep 17 00:00:00 2001 >>>> From: Suman Anna <s-anna@ti.com> >>>> Date: Fri, 9 Mar 2018 16:39:59 -0600 >>>> Subject: [PATCH] media: omap3isp: fix unbalanced dma_iommu_mapping >>>> >>>> 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> >>> Pavel >>> >
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c index 8eb000e3d8fd..c7d667bfc2af 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;