OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
08baca4
)
dmaengine: bcm2835: do not call vchan_vdesc_fini() with lock held
author
Sascha Hauer
<s.hauer@pengutronix.de>
Mon, 16 Dec 2019 10:53:20 +0000
(11:53 +0100)
committer
Vinod Koul
<vkoul@kernel.org>
Thu, 26 Dec 2019 04:34:18 +0000
(10:04 +0530)
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>
drivers/dma/bcm2835-dma.c
patch
|
blob
|
history
diff --git
a/drivers/dma/bcm2835-dma.c
b/drivers/dma/bcm2835-dma.c
index
e4c593f
..
4768ef2
100644
(file)
--- a/
drivers/dma/bcm2835-dma.c
+++ b/
drivers/dma/bcm2835-dma.c
@@
-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);
}