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/iwl3945-base.c | |
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/iwl3945-base.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 1 |
1 files changed, 1 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; |