Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: amd-xgbe: add missed tasklet_kill

The driver does not call tasklet_kill in several places.
Add the calls to fix it.

Fixes: 85b85c853401 ("amd-xgbe: Re-issue interrupt if interrupt status not cleared")
Signed-off-by: Jiguang Xiao <jiguang.xiao@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Jiguang Xiao and committed by
David S. Miller
d530ece7 fec73521

+9 -2
+3
drivers/net/ethernet/amd/xgbe/xgbe-drv.c
··· 1064 1064 1065 1065 devm_free_irq(pdata->dev, pdata->dev_irq, pdata); 1066 1066 1067 + tasklet_kill(&pdata->tasklet_dev); 1068 + tasklet_kill(&pdata->tasklet_ecc); 1069 + 1067 1070 if (pdata->vdata->ecc_support && (pdata->dev_irq != pdata->ecc_irq)) 1068 1071 devm_free_irq(pdata->dev, pdata->ecc_irq, pdata); 1069 1072
+3 -1
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c
··· 447 447 xgbe_i2c_disable(pdata); 448 448 xgbe_i2c_clear_all_interrupts(pdata); 449 449 450 - if (pdata->dev_irq != pdata->i2c_irq) 450 + if (pdata->dev_irq != pdata->i2c_irq) { 451 451 devm_free_irq(pdata->dev, pdata->i2c_irq, pdata); 452 + tasklet_kill(&pdata->tasklet_i2c); 453 + } 452 454 } 453 455 454 456 static int xgbe_i2c_start(struct xgbe_prv_data *pdata)
+3 -1
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
··· 1390 1390 /* Disable auto-negotiation */ 1391 1391 xgbe_an_disable_all(pdata); 1392 1392 1393 - if (pdata->dev_irq != pdata->an_irq) 1393 + if (pdata->dev_irq != pdata->an_irq) { 1394 1394 devm_free_irq(pdata->dev, pdata->an_irq, pdata); 1395 + tasklet_kill(&pdata->tasklet_an); 1396 + } 1395 1397 1396 1398 pdata->phy_if.phy_impl.stop(pdata); 1397 1399