dmaengine: pxa_dma: fix initial list move
authorRobert Jarzmik <robert.jarzmik@free.fr>
Mon, 21 Sep 2015 09:06:32 +0000 (11:06 +0200)
committerVinod Koul <vinod.koul@intel.com>
Fri, 25 Sep 2015 01:51:01 +0000 (07:21 +0530)
Since the commit to have an allocated list of virtual descriptors was
reverted, the pxa_dma driver is broken, as it assumes the descriptor is
placed on the allocated list upon allocation.

Fix the issue in pxa_dma by making an allocated virtual descriptor a
singleton.

Fixes: 8c8fe97b2b8a ("Revert "dmaengine: virt-dma: don't always free descriptor upon completion"")
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/pxa_dma.c

index 5cb61ce01036fef2dc5248d11f99859e2dcb9d86..c6723ecd58482d0220d23b9b05f4a2ed1f8f4660 100644 (file)
@@ -887,6 +887,7 @@ pxad_tx_prep(struct virt_dma_chan *vc, struct virt_dma_desc *vd,
        struct dma_async_tx_descriptor *tx;
        struct pxad_chan *chan = container_of(vc, struct pxad_chan, vc);
 
+       INIT_LIST_HEAD(&vd->node);
        tx = vchan_tx_prep(vc, vd, tx_flags);
        tx->tx_submit = pxad_tx_submit;
        dev_dbg(&chan->vc.chan.dev->device,