bbd9ebecee
ath9k: Fix kernel panic during driver initilization mwifiex: add NULL checks in driver unload path bcma: don't fail for bad SPROM CRC zd1211rw: firmware needs duration_id set to zero for non-pspoll frames mac80211: Fix a rwlock bad magic bug rtlwifi: Modify rtl_pci_init to return 0 on success
67 lines
2.1 KiB
Diff
67 lines
2.1 KiB
Diff
From 2da8cbf8a6b454296c9db7b57cac72d5a39e3aa7 Mon Sep 17 00:00:00 2001
|
|
From: Amitkumar Karwar <akarwar@marvell.com>
|
|
Date: Fri, 3 Feb 2012 20:34:02 -0800
|
|
Subject: [PATCH] mwifiex: add NULL checks in driver unload path
|
|
|
|
If driver load is failed, sometimes few pointers may remain
|
|
uninitialized ex. priv->wdev, priv->netdev, adapter->sleep_cfm
|
|
This will cause NULL pointer dereferance while unloading the
|
|
driver.
|
|
|
|
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
|
|
Signed-off-by: Kiran Divekar <dkiran@marvell.com>
|
|
Signed-off-by: Bing Zhao <bzhao@marvell.com>
|
|
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
---
|
|
drivers/net/wireless/mwifiex/init.c | 3 ++-
|
|
drivers/net/wireless/mwifiex/main.c | 12 ++++++++----
|
|
2 files changed, 10 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c
|
|
index e05b417..1d0ec57 100644
|
|
--- a/drivers/net/wireless/mwifiex/init.c
|
|
+++ b/drivers/net/wireless/mwifiex/init.c
|
|
@@ -382,7 +382,8 @@ mwifiex_free_adapter(struct mwifiex_adapter *adapter)
|
|
|
|
adapter->if_ops.cleanup_if(adapter);
|
|
|
|
- dev_kfree_skb_any(adapter->sleep_cfm);
|
|
+ if (adapter->sleep_cfm)
|
|
+ dev_kfree_skb_any(adapter->sleep_cfm);
|
|
}
|
|
|
|
/*
|
|
diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c
|
|
index 84be196..b728f54 100644
|
|
--- a/drivers/net/wireless/mwifiex/main.c
|
|
+++ b/drivers/net/wireless/mwifiex/main.c
|
|
@@ -822,7 +822,9 @@ int mwifiex_remove_card(struct mwifiex_adapter *adapter, struct semaphore *sem)
|
|
continue;
|
|
|
|
rtnl_lock();
|
|
- mwifiex_del_virtual_intf(priv->wdev->wiphy, priv->netdev);
|
|
+ if (priv->wdev && priv->netdev)
|
|
+ mwifiex_del_virtual_intf(priv->wdev->wiphy,
|
|
+ priv->netdev);
|
|
rtnl_unlock();
|
|
}
|
|
|
|
@@ -830,9 +832,11 @@ int mwifiex_remove_card(struct mwifiex_adapter *adapter, struct semaphore *sem)
|
|
if (!priv)
|
|
goto exit_remove;
|
|
|
|
- wiphy_unregister(priv->wdev->wiphy);
|
|
- wiphy_free(priv->wdev->wiphy);
|
|
- kfree(priv->wdev);
|
|
+ if (priv->wdev) {
|
|
+ wiphy_unregister(priv->wdev->wiphy);
|
|
+ wiphy_free(priv->wdev->wiphy);
|
|
+ kfree(priv->wdev);
|
|
+ }
|
|
|
|
mwifiex_terminate_workqueue(adapter);
|
|
|
|
--
|
|
1.7.4.4
|
|
|