mirror of https://gitee.com/openkylin/linux.git
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: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
549a68c3fe
commit
e3b7df17c8
|
@ -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)
|
||||||
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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue