diff options
| author | Gupta, Kapil <kapgupta@qti.qualcomm.com> | 2016-07-07 14:03:34 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-07-14 16:30:27 +0530 |
| commit | 4152b9bb6a49d2312e1e81152813ded6dad3c436 (patch) | |
| tree | f48459e80018e89e4e306cbaec628381ddbb5edf | |
| parent | e1d9d03240b0c00e43c590e7c7643ab9a7955e13 (diff) | |
qcacld-2.0: Fix memory leak issue
Memory allocated for dfs filters in dfs_attach() API
does not get freed in failure case.
Add changes to fix memory leak issue.
Change-Id: Icdd4a382685471c0d3cf8115cec30fcb307eedfb
CRs-Fixed: 1038603
| -rw-r--r-- | CORE/SERVICES/DFS/src/dfs.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/CORE/SERVICES/DFS/src/dfs.c b/CORE/SERVICES/DFS/src/dfs.c index 04cafdd2cccc..5a918ff6660a 100644 --- a/CORE/SERVICES/DFS/src/dfs.c +++ b/CORE/SERVICES/DFS/src/dfs.c @@ -260,6 +260,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]) { + vos_mem_free(radarf->ft_filters[i]); + radarf->ft_filters[i] = NULL; + } + } +} + int dfs_attach(struct ieee80211com *ic) { @@ -417,6 +435,7 @@ bad2: 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; } @@ -438,24 +457,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]) { - vos_mem_free(radarf->ft_filters[i]); - radarf->ft_filters[i] = NULL; - } - } -} - void dfs_detach(struct ieee80211com *ic) { |
