linux/drivers/dma
Peter Ujfalusi 8b4104be9c dmaengine: omap-dma: Fix memory leak when terminating running transfer
commit 02d88b735f upstream.

In omap_dma_start_desc the vdesc->node is removed from the virt-dma
framework managed lists (to be precise from the desc_issued list).
If a terminate_all comes before the transfer finishes the omap_desc will
not be freed up because it is not in any of the lists and we stopped the
DMA channel so the transfer will not going to complete.
There is no special sequence for leaking memory when using cyclic (audio)
transfer: with every start and stop of a cyclic transfer the driver leaks
struct omap_desc worth of memory.

Free up the allocated memory directly in omap_dma_terminate_all() since the
framework will not going to do that for us.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
CC: <linux-omap@vger.kernel.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-04-19 10:11:07 +02:00
..
bestcomm drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
dw dmaengine: dw: append MODULE_ALIAS for platform driver 2015-04-13 14:03:02 +02:00
ioat ioat: fix tasklet tear down 2014-02-25 09:44:20 -08:00
ipu dmaengine: ipu: fix warnings from 64-bit dma_addr_t printouts 2013-11-13 14:10:48 +05:30
ppc4xx Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
sh rcar-hpbdma: initialise plane information when halted 2013-11-28 13:46:00 +05:30
Kconfig ARM: moxart: move DMA_OF selection to driver 2014-02-02 19:52:45 -08:00
Makefile dmaengine: Add MOXA ART DMA engine driver 2014-01-20 12:32:46 +05:30
TODO dmaengine: dw: don't perform DMA when dmaengine_submit is called 2014-10-05 14:52:24 -07:00
acpi-dma.c acpi-dma: align documentation with kernel-doc format 2014-01-26 17:33:57 +05:30
amba-pl08x.c dma: pl08x: Export pl08x_filter_id 2014-01-28 08:45:54 +05:30
at_hdmac.c Merge commit 'dmaengine-3.13-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/dmaengine 2013-11-16 12:02:36 +05:30
at_hdmac_regs.h dmaengine: at_hdmac: remove unused function 2013-12-12 22:43:41 -08:00
bcm2835-dma.c dmaengine: Add DMA_PRIVATE to BCM2835 driver 2014-01-20 12:31:50 +05:30
coh901318.c dmaengine: coh901318: use DMA_COMPLETE for dma completion status 2013-10-25 11:15:56 +05:30
coh901318.h dma: coh901318: merge header files 2013-01-07 17:36:37 +01:00
coh901318_lli.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
cppi41.c drivers/dma: fix error return code 2014-01-20 14:58:03 +05:30
dma-jz4740.c dmaengine: jz4740: use DMA_COMPLETE for dma completion status 2013-10-25 11:15:58 +05:30
dmaengine.c dmaengine: fix dmaengine_unmap failure 2014-06-07 10:28:25 -07:00
dmaengine.h dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
dmatest.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
edma.c dma: edma: fix incorrect SG list handling 2014-05-13 13:32:55 +02:00
ep93xx_dma.c dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
fsldma.c dma: fix fsldma build warnings 2013-12-12 22:43:41 -08:00
fsldma.h DMA: Freescale: change BWC from 256 bytes to 1024 bytes 2014-01-20 13:13:22 +05:30
imx-dma.c Merge branch 'for-linus' into next 2013-10-31 22:36:13 +05:30
imx-sdma.c dma: sdma: Add imx25 compatible 2014-02-18 17:10:49 +05:30
intel_mid_dma.c dmaengine: intel_mid_dma: use DMA_COMPLETE for dma completion status 2013-10-25 11:16:04 +05:30
intel_mid_dma_regs.h dma: fix comments 2012-09-01 08:57:12 -07:00
iop-adma.c Merge commit 'dmaengine-3.13-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/dmaengine 2013-11-16 12:02:36 +05:30
iovlock.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
k3dma.c dmaengine: k3dma: fix sparse warnings 2014-01-20 13:53:20 +05:30
mmp_pdma.c dmaengine: mmp_pdma: fix mismerge 2014-01-29 17:38:57 +05:30
mmp_tdma.c dma:mmp_tdma: get sram pool through device tree 2014-01-09 17:46:20 +05:30
moxart-dma.c dmaengine: Add MOXA ART DMA engine driver 2014-01-20 12:32:46 +05:30
mpc512x_dma.c drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
mv_xor.c dma: mv_xor: Flush descriptors before activating a channel 2014-06-07 10:28:25 -07:00
mv_xor.h dma: mv_xor: Fix mis-usage of mmio 'base' and 'high_base' registers 2013-11-14 11:04:42 -08:00
mxs-dma.c dma: mxs-dma: Use semaphores for cyclic DMA 2013-11-13 15:38:31 +05:30
of-dma.c dma: add channel request API that supports deferred probe 2013-12-10 17:46:48 +05:30
omap-dma.c dmaengine: omap-dma: Fix memory leak when terminating running transfer 2015-04-19 10:11:07 +02:00
pch_dma.c pch_dma: Add MODULE_DEVICE_TABLE 2013-09-02 11:59:58 +05:30
pl330.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
s3c24xx-dma.c dma: fix build breakage in s3c24xx-dma 2013-12-04 11:24:30 +05:30
sa11x0-dma.c dmaengine: sa11x0: use DMA_COMPLETE for dma completion status 2013-10-25 11:16:13 +05:30
sirf-dma.c dmaengine: sirf: Add device_slave_caps interface 2014-01-20 13:17:31 +05:30
ste_dma40.c dma: ste_dma40: don't dereference free:d descriptor 2014-02-17 14:06:58 +05:30
ste_dma40_ll.c dmaengine: ste_dma40_ll: Replace meaningless register set with comment 2013-06-04 11:12:10 +02:00
ste_dma40_ll.h dmaengine: ste_dma40: Remove unnecessary call to d40_phy_cfg() 2013-05-23 21:13:19 +02:00
tegra20-apb-dma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
timb_dma.c dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
txx9dmac.c dma: fix build warnings in txx9 2013-12-12 22:43:41 -08:00
txx9dmac.h dmaengine: move last completed cookie into generic dma_chan structure 2012-03-13 11:36:06 +05:30
virt-dma.c dmaengine: virt-dma: add support for cyclic DMA periodic callbacks 2012-07-01 14:15:23 +01:00
virt-dma.h dma: fix vchan_cookie_complete() debug print 2014-01-26 17:33:45 +05:30