[PATCH v2 60/64] dmaengine: bam-dma: use dma_chan_kill_bh
Allen Pais <[email protected]> Mon, 27 Jul 2026 13:39:22 -0700
| Newsgroups | org.kernel.vger.dmaengine,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <b4d1a1d4b56f548e157a4d9d8bed785f507dc157.1785183549.git.allen.lkml@gmail.com> |
virt-dma now dispatches completion callbacks through per-channel BH work instead of its tasklet. Cancel that work during teardown before channel storage is released. Signed-off-by: Allen Pais <[email protected]> --- drivers/dma/qcom/bam_dma.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/dma/qcom/bam_dma.c b/drivers/dma/qcom/bam_dma.c index 1bb26af0405f..74bc2fe445b3 100644 --- a/drivers/dma/qcom/bam_dma.c +++ b/drivers/dma/qcom/bam_dma.c @@ -1387,7 +1387,7 @@ static int bam_dma_probe(struct platform_device *pdev) dma_async_device_unregister(&bdev->common); err_bam_channel_exit: for (i = 0; i < bdev->num_channels; i++) - tasklet_kill(&bdev->channels[i].vc.task); + dma_chan_kill_bh(&bdev->channels[i].vc.chan); err_tasklet_kill: tasklet_kill(&bdev->task); err_disable_clk: @@ -1413,7 +1413,7 @@ static void bam_dma_remove(struct platform_device *pdev) for (i = 0; i < bdev->num_channels; i++) { bam_dma_terminate_all(&bdev->channels[i].vc.chan); - tasklet_kill(&bdev->channels[i].vc.task); + dma_chan_kill_bh(&bdev->channels[i].vc.chan); if (!bdev->channels[i].fifo_virt) continue; -- 2.43.0