linux/drivers/dma
Lior Amsalem b73f70d82c dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup
commit 9136291f1d upstream.

This patch fixes a bug in the XOR driver where the cleanup function can be
called and free descriptors that never been processed by the engine (which
result in data errors).

The cleanup function will free descriptors based on the ownership bit in
the descriptors.

Fixes: ff7b04796d ("dmaengine: DMA engine driver for Marvell XOR engine")
Signed-off-by: Lior Amsalem <alior@marvell.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Reviewed-by: Ofer Heifetz <oferh@marvell.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
[ luis: backported to 3.16:
  - function rename: mv_xor_slot_cleanup() -> __mv_xor_slot_cleanup()
  - adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-07-15 10:00:31 +01: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-03-30 11:11:45 +01: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 dmaengine: sh: don't use dynamic static allocation 2014-06-03 11:35:33 +05:30
xilinx dma: Add Xilinx AXI Video Direct Memory Access Engine driver support 2014-04-30 10:44:13 +05:30
acpi-dma.c acpi-dma: convert to return error code when asked for channel 2014-02-11 23:30:50 +05:30
amba-pl08x.c dma: pl08x: Export pl08x_filter_id 2014-01-28 08:45:54 +05:30
at_hdmac.c dmaengine: at_hdmac: use tasklet_kill in teardown 2014-03-17 18:33:43 +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 dma: cppi41: handle 0-length packets 2014-07-01 12:15:48 +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-05-21 14:02:37 -07:00
dmaengine.h dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
dmatest.c Add new line to test result strings produced in verbose mode 2014-03-26 11:41:45 +05:30
edma.c dmaengine: edma: fix memory leak when terminating running transfers 2015-04-13 16:48:58 +01:00
ep93xx_dma.c dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
fsl-edma.c dma: fix eDMA driver as a subsys_initcall 2014-04-16 12:03:47 +05:30
fsldma.c DMA: Freescale: move functions to avoid forward declarations 2014-05-02 22:17:43 +05:30
fsldma.h DMA: Freescale: change BWC from 256 bytes to 1024 bytes 2014-01-20 13:13:22 +05:30
imx-dma.c dma: imx-dma: Add missing module owner field 2014-03-06 20:51:09 +05:30
imx-sdma.c Update imx-sdma cyclic handling to report residue 2014-07-01 12:23:42 +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
Kconfig Merge branch 'topic/xilinx' into for-linus 2014-06-09 21:56:29 +05:30
Makefile dma: Add Xilinx AXI Video Direct Memory Access Engine driver support 2014-04-30 10:44:13 +05:30
mmp_pdma.c dma: mmp_pdma: add support for residue reporting 2014-05-07 12:33:40 +05:30
mmp_tdma.c dma: mmp_tdma: move to generic device tree binding 2014-03-06 14:49:54 +05:30
moxart-dma.c dmaengine: Add MOXA ART DMA engine driver 2014-01-20 12:32:46 +05:30
mpc512x_dma.c dmaengine: mpc512x: add support for peripheral transfers 2014-05-22 10:37:01 +05:30
mv_xor.c dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup 2015-07-15 10:00:31 +01:00
mv_xor.h dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup 2015-07-15 10:00:31 +01: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-13 16:48:59 +01:00
pch_dma.c dmaengine: pch: fix compilation for alpha target 2014-05-22 18:50:49 +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
qcom_bam_dma.c dmaengine: add Qualcomm BAM dma driver 2014-04-05 20:44:26 +05:30
s3c24xx-dma.c dmaengine: s3c24xx-dma: Add cyclic transfer support 2014-06-01 22:22:51 +05:30
sa11x0-dma.c dmaengine: sa11x0: remove broken #ifdef 2014-05-21 11:40:49 +05:30
sirf-dma.c dmaengine: sirf: off by one in of_dma_sirfsoc_xlate() 2014-04-16 11:59:24 +05:30
ste_dma40.c dma: ste_dma40: Convert to the late system PM callbacks 2014-05-07 15:32:07 +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
TODO dmaengine: dw: don't perform DMA when dmaengine_submit is called 2014-10-05 13:41:11 -07: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