On Thu, 6 Mar 2014, Vinod Koul wrote: > As discussed in [1] the tasklet_disable is not a proper function for teardown. > The driver also uses correct method of tasklet_kill. So remove tasklet_disable > > [1]: http://lwn.net/Articles/588457/ > > Reported-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Signed-off-by: Vinod Koul <vinod.koul@xxxxxxxxx> > --- > drivers/dma/at_hdmac.c | 1 - > 1 files changed, 0 insertions(+), 1 deletions(-) > > diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c > index e2c04dc..c13a3bb 100644 > --- a/drivers/dma/at_hdmac.c > +++ b/drivers/dma/at_hdmac.c > @@ -1569,7 +1569,6 @@ static int at_dma_remove(struct platform_device *pdev) > > /* Disable interrupts */ > atc_disable_chan_irq(atdma, chan->chan_id); > - tasklet_disable(&atchan->tasklet); > > tasklet_kill(&atchan->tasklet); > list_del(&chan->device_node); So you disable the irq at the device level, but what makes sure that the last interrupt on that line has completed and no further scheduling of the tasklet can happen? See [1] :) Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html