Skip to content

Commit

Permalink
sky2: fix oops on shutdown
Browse files Browse the repository at this point in the history
If the device is fails during module startup for some reason like
unsupported chip version then the 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>
  • Loading branch information
Stephen Hemminger authored and Jeff Garzik committed May 11, 2007
1 parent 4093785 commit 549a68c
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/net/sky2.c
Original file line number Diff line number Diff line change
Expand Up @@ -3732,6 +3732,7 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
err_out_disable:
pci_disable_device(pdev);
err_out:
pci_set_drvdata(pdev, NULL);
return err;
}

Expand Down Expand Up @@ -3784,6 +3785,9 @@ static int sky2_suspend(struct pci_dev *pdev, pm_message_t state)
struct sky2_hw *hw = pci_get_drvdata(pdev);
int i, wol = 0;

if (!hw)
return 0;

del_timer_sync(&hw->idle_timer);
netif_poll_disable(hw->dev[0]);

Expand Down Expand Up @@ -3815,6 +3819,9 @@ static int sky2_resume(struct pci_dev *pdev)
struct sky2_hw *hw = pci_get_drvdata(pdev);
int i, err;

if (!hw)
return 0;

err = pci_set_power_state(pdev, PCI_D0);
if (err)
goto out;
Expand Down Expand Up @@ -3861,6 +3868,9 @@ static void sky2_shutdown(struct pci_dev *pdev)
struct sky2_hw *hw = pci_get_drvdata(pdev);
int i, wol = 0;

if (!hw)
return;

del_timer_sync(&hw->idle_timer);
netif_poll_disable(hw->dev[0]);

Expand Down

0 comments on commit 549a68c

Please sign in to comment.