dmaengine: fix xor sources continuation
authorXuelin Shi <xuelin.shi@freescale.com>
Tue, 1 Jul 2014 08:32:38 +0000 (16:32 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Oct 2014 16:38:20 +0000 (09:38 -0700)
commit 87cea76384257e6ac3fa4791b6a6b9d0335f7457 upstream.

the partial xor result must be kept until the next
tx is generated.

Signed-off-by: Xuelin Shi <xuelin.shi@freescale.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
crypto/async_tx/async_xor.c

index 3c562f5..e1bce26 100644 (file)
@@ -78,8 +78,6 @@ do_async_xor(struct dma_chan *chan, struct dmaengine_unmap_data *unmap,
                tx = dma->device_prep_dma_xor(chan, dma_dest, src_list,
                                              xor_src_cnt, unmap->len,
                                              dma_flags);
-               src_list[0] = tmp;
-
 
                if (unlikely(!tx))
                        async_tx_quiesce(&submit->depend_tx);
@@ -92,6 +90,7 @@ do_async_xor(struct dma_chan *chan, struct dmaengine_unmap_data *unmap,
                                                      xor_src_cnt, unmap->len,
                                                      dma_flags);
                }
+               src_list[0] = tmp;
 
                dma_set_unmap(tx, unmap);
                async_tx_submit(chan, tx, submit);