summaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
authorVinod Koul <vinod.koul@intel.com>2016-07-05 08:12:28 +0200
committerVinod Koul <vinod.koul@intel.com>2016-07-23 12:37:24 +0200
commit7e654bf7c10162c3cc7fed5c520a2adef9d6e8f7 (patch)
treec5126cbc0a178a1541dcdc724e1945461a3b76bf /drivers/dma
parentdmaengine: s3c24xx: explicitly freeup irq (diff)
downloadlinux-7e654bf7c10162c3cc7fed5c520a2adef9d6e8f7.tar.xz
linux-7e654bf7c10162c3cc7fed5c520a2adef9d6e8f7.zip
dmaengine: s3c24xx: kill the tasklets upon exit
drivers should ensure that tasklets are killed, so that they can't be executed after driver remove is executed, so ensure they are killed. This driver used vchan tasklets, so those need to be killed. Signed-off-by: Vinod Koul <vinod.koul@intel.com> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/s3c24xx-dma.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/dma/s3c24xx-dma.c b/drivers/dma/s3c24xx-dma.c
index 163d95f339e6..ce67075589f5 100644
--- a/drivers/dma/s3c24xx-dma.c
+++ b/drivers/dma/s3c24xx-dma.c
@@ -1136,8 +1136,10 @@ static void s3c24xx_dma_free_virtual_channels(struct dma_device *dmadev)
struct s3c24xx_dma_chan *next;
list_for_each_entry_safe(chan,
- next, &dmadev->channels, vc.chan.device_node)
+ next, &dmadev->channels, vc.chan.device_node) {
list_del(&chan->vc.chan.device_node);
+ tasklet_kill(&chan->vc.task);
+ }
}
/* s3c2410, s3c2440 and s3c2442 have a 0x40 stride without separate clocks */