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: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.kernel.org/r/20191216105328.15198-2-s.hauer@pengutronix.de Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
08baca4280
commit
5c8aacbbb3
|
@ -797,10 +797,7 @@ static int bcm2835_dma_terminate_all(struct dma_chan *chan)
|
|||
|
||||
/* stop DMA activity */
|
||||
if (c->desc) {
|
||||
if (c->desc->vd.tx.flags & DMA_PREP_INTERRUPT)
|
||||
vchan_terminate_vdesc(&c->desc->vd);
|
||||
else
|
||||
vchan_vdesc_fini(&c->desc->vd);
|
||||
vchan_terminate_vdesc(&c->desc->vd);
|
||||
c->desc = NULL;
|
||||
bcm2835_dma_abort(c);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue