Message ID | 1437755067-28622-9-git-send-email-alex.smith@imgtec.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c index 92954cde0566..e05aae7bd283 100644 --- a/drivers/dma/dma-jz4780.c +++ b/drivers/dma/dma-jz4780.c @@ -866,9 +866,15 @@ err_free_irq: static int jz4780_dma_remove(struct platform_device *pdev) { struct jz4780_dma_dev *jzdma = platform_get_drvdata(pdev); + int i; of_dma_controller_free(pdev->dev.of_node); + free_irq(jzdma->irq, jzdma); + + for (i = 0; i < JZ_DMA_NR_CHANNELS; i++) + tasklet_kill(&jzdma->chan[i].vchan.task); + dma_async_device_unregister(&jzdma->dma_device); return 0; }
Tasklets may have been scheduled as a result of an earlier interrupt that could still be running. Kill them before unregistering the device. Signed-off-by: Alex Smith <alex.smith@imgtec.com> Cc: Vinod Koul <vinod.koul@intel.com> Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> Cc: dmaengine@vger.kernel.org --- Changes in v3: - New patch. --- drivers/dma/dma-jz4780.c | 6 ++++++ 1 file changed, 6 insertions(+)