dmaengine: pl330: Fix overflow when reporting residue in memcpy
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>
Mon, 15 Jun 2015 08:25:16 +0000 (17:25 +0900)
committerVinod Koul <vinod.koul@intel.com>
Tue, 7 Jul 2015 03:57:53 +0000 (09:27 +0530)
During memcpy operations the residue was always set to an u32 overflowed
value.

In pl330_tx_status() function number of currently transferred bytes was
subtracted from internal "bytes_requested" field. However this
"bytes_requested" was not initialized at start to length of memcpy
buffer so transferred bytes were subtracted from 0 causing overflow.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: <stable@vger.kernel.org>
Fixes: aee4d1fac887 ("dmaengine: pl330: improve pl330_tx_status() function")
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/pl330.c

index f513f77b1d85471ff0997f8d9f4755deca293621..c535cd05972459acc5202872e3ddd64b5e08694d 100644 (file)
@@ -2623,6 +2623,7 @@ pl330_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dst,
                desc->rqcfg.brst_len = 1;
 
        desc->rqcfg.brst_len = get_burst_len(desc, len);
+       desc->bytes_requested = len;
 
        desc->txd.flags = flags;