Re: [PATCH] rsi: fix memory leak in module unload
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
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