diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2007-12-13 18:52:12 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2007-12-17 17:01:39 -0500 |
commit | a5acc379e52c78db407c73537daff387b179202c (patch) | |
tree | b200c48c9f4d6e07c3126ea38b2589be19ca153d /drivers/net/wireless/iwlwifi | |
parent | b808ab16a9c99c00e3d8c3b351977fce62781dd0 (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/net/wireless/iwlwifi')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 1 |
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; |