diff options
author | Ajit Khaparde <ajit.khaparde@emulex.com> | 2011-04-06 05:53:13 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-04-06 12:40:18 -0700 |
commit | 2d5d4154650459b61a8e7097d186a89d89dab8ed (patch) | |
tree | 1a68a7ce66ee6fae5731e53287f7e3c54209c394 /drivers/net/benet | |
parent | 1e58148670908e9fd180761c0eed3839b6778f01 (diff) | |
download | op-kernel-dev-2d5d4154650459b61a8e7097d186a89d89dab8ed.zip op-kernel-dev-2d5d4154650459b61a8e7097d186a89d89dab8ed.tar.gz |
be2net: Fix a potential crash during shutdown.
adapter could remain uninitialized if probe fails for some reason.
A null pointer access could cause a crash if be_shutdown
is called after that.
Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/benet')
-rw-r--r-- | drivers/net/benet/be_main.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index a71163f..6e8e211 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c @@ -3141,12 +3141,14 @@ static int be_resume(struct pci_dev *pdev) static void be_shutdown(struct pci_dev *pdev) { struct be_adapter *adapter = pci_get_drvdata(pdev); - struct net_device *netdev = adapter->netdev; - if (netif_running(netdev)) + if (!adapter) + return; + + if (netif_running(adapter->netdev)) cancel_delayed_work_sync(&adapter->work); - netif_device_detach(netdev); + netif_device_detach(adapter->netdev); be_cmd_reset_function(adapter); |