On Mon, Mar 23, 2015 at 02:32:07AM +0000, yoshihiro shimoda wrote: > > > > > +static void usb_dmac_chan_remove(struct usb_dmac_chan *uchan) > > > > > +{ > > > > > + tasklet_kill(&uchan->task); > > > > that part is good, but how about disabling irq? you can still get insterrupt > > > > > > Thank you for the point! I will add calling usb_dmac_chan_halt() to disable the interrupt. > > On top of that you should free/disable the irq as well > > Does this mean I should call free_irq() or something in this remove function? Yes, that way irq can be be invoked > Since this driver uses devm_request_irq(), I don't think the driver call such a function. > (After this driver was removed, free_irq() was called by devm_irq_release()) Yes FW will call, but the issue is that isr can get triggered after you ahve freed up stuff. So to prevent thsi it is recomendded that driver invoked free_irq() explictly or disable the irq line -- ~Vinod -- 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