aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2007-12-13 18:52:12 -0500
committerJohn W. Linville <linville@tuxdriver.com>2007-12-17 17:01:39 -0500
commita5acc379e52c78db407c73537daff387b179202c (patch)
treeb200c48c9f4d6e07c3126ea38b2589be19ca153d /drivers
parentb808ab16a9c99c00e3d8c3b351977fce62781dd0 (diff)
iwlwifi3945/4965: fix rate control algo reference leak
Fix rate control algo reference leak in case if network device has been failed to register. In this case special flag priv->mac80211_registered is not set and the rate algo reference is not freeing on module unload. That leads to OOPs in further ieee80211 rate register/unregister procedure (by any callee). It should fix the bug #9470 http://bugzilla.kernel.org/show_bug.cgi?id=9470 [akpm@linux-foundation.org: build fix] Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Acked-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 4bdf237f6adc..1c3ca6ebdc4d 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -6171,6 +6171,7 @@ static void iwl_alive_start(struct iwl_priv *priv)
6171 mutex_lock(&priv->mutex); 6171 mutex_lock(&priv->mutex);
6172 6172
6173 if (rc) { 6173 if (rc) {
6174 iwl_rate_control_unregister(priv->hw);
6174 IWL_ERROR("Failed to register network " 6175 IWL_ERROR("Failed to register network "
6175 "device (error %d)\n", rc); 6176 "device (error %d)\n", rc);
6176 return; 6177 return;
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 8f85564ec6fa..3b31607a27fc 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -6527,6 +6527,7 @@ static void iwl_alive_start(struct iwl_priv *priv)
6527 mutex_lock(&priv->mutex); 6527 mutex_lock(&priv->mutex);
6528 6528
6529 if (rc) { 6529 if (rc) {
6530 iwl_rate_control_unregister(priv->hw);
6530 IWL_ERROR("Failed to register network " 6531 IWL_ERROR("Failed to register network "
6531 "device (error %d)\n", rc); 6532 "device (error %d)\n", rc);
6532 return; 6533 return;