Commit 5c8aacbb authored by Sascha Hauer's avatar Sascha Hauer Committed by Vinod Koul

dmaengine: bcm2835: do not call vchan_vdesc_fini() with lock held

vchan_vdesc_fini() can't be called locked. Instead, call
vchan_terminate_vdesc() which delays the freeing of the descriptor to
vchan_synchronize().
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
Link: https://lore.kernel.org/r/20191216105328.15198-2-s.hauer@pengutronix.deSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 08baca42
...@@ -797,10 +797,7 @@ static int bcm2835_dma_terminate_all(struct dma_chan *chan) ...@@ -797,10 +797,7 @@ static int bcm2835_dma_terminate_all(struct dma_chan *chan)
/* stop DMA activity */ /* stop DMA activity */
if (c->desc) { if (c->desc) {
if (c->desc->vd.tx.flags & DMA_PREP_INTERRUPT)
vchan_terminate_vdesc(&c->desc->vd); vchan_terminate_vdesc(&c->desc->vd);
else
vchan_vdesc_fini(&c->desc->vd);
c->desc = NULL; c->desc = NULL;
bcm2835_dma_abort(c); bcm2835_dma_abort(c);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment