drivers/net: use tasklet_kill in device remove/close process
Some driver uses tasklet_disable in device remove/close process, tasklet_disable will inc tasklet->count and return. If the tasklet is not handled yet because some softirq pressure, the tasklet will placed on the tasklet_vec, never have a chance to excute. This might lead to ksoftirqd heavy loaded, wakeup with pending_softirq, but tasklet is disabled. tasklet_kill should be used in this case. Signed-off-by: Xiaotian Feng <dannyfeng@tencent.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: netdev@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
d145f7ec23
commit
175c0dffef
@@ -990,7 +990,7 @@ static int axienet_stop(struct net_device *ndev)
|
||||
axienet_setoptions(ndev, lp->options &
|
||||
~(XAE_OPTION_TXEN | XAE_OPTION_RXEN));
|
||||
|
||||
tasklet_disable(&lp->dma_err_tasklet);
|
||||
tasklet_kill(&lp->dma_err_tasklet);
|
||||
|
||||
free_irq(lp->tx_irq, ndev);
|
||||
free_irq(lp->rx_irq, ndev);
|
||||
|
Reference in New Issue
Block a user