Re: [PATCH] rsi: fix memory leak in module unload

2016-10-12 Thread Kalle Valo
Prameela Rani Garnepudi  writes:

> debugfs entry removal statement moved inside CONFIG_RSI_DEBUGSFS flag
> added freeing of below structures
>  * channel list for each supported band
>  * rsi debugfs info
>
> Signed-off-by: Prameela Rani Garnepudi 

[...]

> --- a/drivers/net/wireless/rsi/rsi_91x_mac80211.c
> +++ b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
> @@ -194,6 +194,7 @@ static void rsi_register_rates_channels(struct rsi_hw 
> *adapter, int band)
>  void rsi_mac80211_detach(struct rsi_hw *adapter)
>  {
>   struct ieee80211_hw *hw = adapter->hw;
> + enum nl80211_band band;
>  
>   if (hw) {
>   ieee80211_stop_queues(hw);
> @@ -201,7 +202,17 @@ void rsi_mac80211_detach(struct rsi_hw *adapter)
>   ieee80211_free_hw(hw);
>   }
>  
> + for (band = 0; band < 2; band++) {
> + struct ieee80211_supported_band *sband =
> + &adapter->sbands[band];
> +
> + kfree(sband->channels);
> + }

Like Arend already mentioned[1] you should use NUM_NL80211_BANDS here
instead of hardcoded value. Yes, that will also go through
NL80211_BAND_60GHZ item but it doesn't matter as it should be empty
anyway.

[1] https://patchwork.kernel.org/patch/9341095/

-- 
Kalle Valo


[PATCH] rsi: fix memory leak in module unload

2016-09-21 Thread Prameela Rani Garnepudi
debugfs entry removal statement moved inside CONFIG_RSI_DEBUGSFS flag
added freeing of below structures
 * channel list for each supported band
 * rsi debugfs info

Signed-off-by: Prameela Rani Garnepudi 
---
 drivers/net/wireless/rsi/rsi_91x_mac80211.c | 11 +++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/wireless/rsi/rsi_91x_mac80211.c 
b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
index dbb2389..f4bbf15 100644
--- a/drivers/net/wireless/rsi/rsi_91x_mac80211.c
+++ b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
@@ -194,6 +194,7 @@ static void rsi_register_rates_channels(struct rsi_hw 
*adapter, int band)
 void rsi_mac80211_detach(struct rsi_hw *adapter)
 {
struct ieee80211_hw *hw = adapter->hw;
+   enum nl80211_band band;
 
if (hw) {
ieee80211_stop_queues(hw);
@@ -201,7 +202,17 @@ void rsi_mac80211_detach(struct rsi_hw *adapter)
ieee80211_free_hw(hw);
}
 
+   for (band = 0; band < 2; band++) {
+   struct ieee80211_supported_band *sband =
+   &adapter->sbands[band];
+
+   kfree(sband->channels);
+   }
+
+#ifdef CONFIG_RSI_DEBUGFS
rsi_remove_dbgfs(adapter);
+   kfree(adapter->dfsentry);
+#endif
 }
 EXPORT_SYMBOL_GPL(rsi_mac80211_detach);
 
-- 
2.4.11