pch_can: fix rmmod issue
Currently, when rmmod pch_can, kernel failure occurs. The cause is pci_iounmap executed before pch_can_reset. Thus pci_iounmap moves after pch_can_reset. Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -959,13 +959,13 @@ static void __devexit pch_can_remove(struct pci_dev *pdev)
|
|||||||
struct pch_can_priv *priv = netdev_priv(ndev);
|
struct pch_can_priv *priv = netdev_priv(ndev);
|
||||||
|
|
||||||
unregister_candev(priv->ndev);
|
unregister_candev(priv->ndev);
|
||||||
pci_iounmap(pdev, priv->regs);
|
|
||||||
if (priv->use_msi)
|
if (priv->use_msi)
|
||||||
pci_disable_msi(priv->dev);
|
pci_disable_msi(priv->dev);
|
||||||
pci_release_regions(pdev);
|
pci_release_regions(pdev);
|
||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
pci_set_drvdata(pdev, NULL);
|
pci_set_drvdata(pdev, NULL);
|
||||||
pch_can_reset(priv);
|
pch_can_reset(priv);
|
||||||
|
pci_iounmap(pdev, priv->regs);
|
||||||
free_candev(priv->ndev);
|
free_candev(priv->ndev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user