diff options
| -rw-r--r-- | core/sap/dfs/src/dfs.c | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/core/sap/dfs/src/dfs.c b/core/sap/dfs/src/dfs.c index a2b5cff32ac1..e3fe339b9657 100644 --- a/core/sap/dfs/src/dfs.c +++ b/core/sap/dfs/src/dfs.c @@ -253,6 +253,24 @@ error: return status; } +/** + * dfs_free_filter() - free memory allocated for dfs ft_filters + * @radarf: pointer holding ft_filters + * + * Return: NA +*/ +static void dfs_free_filter(struct dfs_filtertype *radarf) +{ + int i; + + for (i = 0; i < DFS_MAX_NUM_RADAR_FILTERS; i++) { + if (radarf->ft_filters[i]) { + qdf_mem_free(radarf->ft_filters[i]); + radarf->ft_filters[i] = NULL; + } + } +} + int dfs_attach(struct ieee80211com *ic) { int i, n; @@ -440,11 +458,20 @@ int dfs_attach(struct ieee80211com *ic) return 0; bad2: - OS_FREE(dfs->dfs_radartable); - dfs->dfs_radartable = NULL; + if (dfs->dfs_radartable != NULL) { + for (n = 0; n < 256; n++) { + if (dfs->dfs_radartable[n] != NULL) { + OS_FREE(dfs->dfs_radartable[n]); + dfs->dfs_radartable[n] = NULL; + } + } + OS_FREE(dfs->dfs_radartable); + dfs->dfs_radartable = NULL; + } bad1: for (n = 0; n < DFS_MAX_RADAR_TYPES; n++) { if (dfs->dfs_radarf[n] != NULL) { + dfs_free_filter(dfs->dfs_radarf[n]); OS_FREE(dfs->dfs_radarf[n]); dfs->dfs_radarf[n] = NULL; } @@ -471,23 +498,6 @@ bad1: #undef N } -/** - * dfs_free_filter() - free memory allocated for dfs ft_filters - * @radarf: pointer holding ft_filters - * - * Return: NA -*/ -static void dfs_free_filter(struct dfs_filtertype *radarf) -{ - int i; - - for (i = 0; i < DFS_MAX_NUM_RADAR_FILTERS; i++) { - if (radarf->ft_filters[i]) { - qdf_mem_free(radarf->ft_filters[i]); - radarf->ft_filters[i] = NULL; - } - } -} void dfs_detach(struct ieee80211com *ic) { struct ath_dfs *dfs = (struct ath_dfs *)ic->ic_dfs; |
