rsi: Fix memory leak in module unload

Observed crash when module is unloaded if CONFIG_RSI_DEBUGSFS is not set.
	Fix: Debugfs entry removal moved inside CONFIG_RSI_DEBUGSFS flag in
             function rsi_mac80211_detach()
Memory leak found and fixed for below structures in function rsi_mac80211_detach()
	* channel list for each supported band
	* rsi debugfs info

Signed-off-by: Prameela Rani Garnepudi <prameela.j04cs@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Prameela Rani Garnepudi 2016-10-13 16:55:46 +05:30 committed by Kalle Valo
parent 87016f5eb1
commit b022539db4
1 changed files with 11 additions and 0 deletions

View File

@ -194,6 +194,7 @@ static void rsi_register_rates_channels(struct rsi_hw *adapter, int band)
void rsi_mac80211_detach(struct rsi_hw *adapter) void rsi_mac80211_detach(struct rsi_hw *adapter)
{ {
struct ieee80211_hw *hw = adapter->hw; struct ieee80211_hw *hw = adapter->hw;
enum nl80211_band band;
if (hw) { if (hw) {
ieee80211_stop_queues(hw); ieee80211_stop_queues(hw);
@ -201,7 +202,17 @@ void rsi_mac80211_detach(struct rsi_hw *adapter)
ieee80211_free_hw(hw); ieee80211_free_hw(hw);
} }
for (band = 0; band < NUM_NL80211_BANDS; band++) {
struct ieee80211_supported_band *sband =
&adapter->sbands[band];
kfree(sband->channels);
}
#ifdef CONFIG_RSI_DEBUGFS
rsi_remove_dbgfs(adapter); rsi_remove_dbgfs(adapter);
kfree(adapter->dfsentry);
#endif
} }
EXPORT_SYMBOL_GPL(rsi_mac80211_detach); EXPORT_SYMBOL_GPL(rsi_mac80211_detach);