提交 e3b7df17 编写于 作者: S Stephen Hemminger 提交者: Jeff Garzik

skge: crash on shutdown/suspend

If device is not fails during module startup (like unsupported chip
version) then driver would crash dereferencing a null pointer, on shutdown
or suspend/resume.
Signed-off-by: NStephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 549a68c3
...@@ -3802,6 +3802,9 @@ static int skge_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -3802,6 +3802,9 @@ static int skge_suspend(struct pci_dev *pdev, pm_message_t state)
struct skge_hw *hw = pci_get_drvdata(pdev); struct skge_hw *hw = pci_get_drvdata(pdev);
int i, err, wol = 0; int i, err, wol = 0;
if (!hw)
return 0;
err = pci_save_state(pdev); err = pci_save_state(pdev);
if (err) if (err)
return err; return err;
...@@ -3830,6 +3833,9 @@ static int skge_resume(struct pci_dev *pdev) ...@@ -3830,6 +3833,9 @@ static int skge_resume(struct pci_dev *pdev)
struct skge_hw *hw = pci_get_drvdata(pdev); struct skge_hw *hw = pci_get_drvdata(pdev);
int i, err; int i, err;
if (!hw)
return 0;
err = pci_set_power_state(pdev, PCI_D0); err = pci_set_power_state(pdev, PCI_D0);
if (err) if (err)
goto out; goto out;
...@@ -3868,6 +3874,9 @@ static void skge_shutdown(struct pci_dev *pdev) ...@@ -3868,6 +3874,9 @@ static void skge_shutdown(struct pci_dev *pdev)
struct skge_hw *hw = pci_get_drvdata(pdev); struct skge_hw *hw = pci_get_drvdata(pdev);
int i, wol = 0; int i, wol = 0;
if (!hw)
return;
for (i = 0; i < hw->ports; i++) { for (i = 0; i < hw->ports; i++) {
struct net_device *dev = hw->dev[i]; struct net_device *dev = hw->dev[i];
struct skge_port *skge = netdev_priv(dev); struct skge_port *skge = netdev_priv(dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册