summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGupta, Kapil <kapgupta@qti.qualcomm.com>2016-07-07 14:03:34 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-07-14 16:30:27 +0530
commit4152b9bb6a49d2312e1e81152813ded6dad3c436 (patch)
treef48459e80018e89e4e306cbaec628381ddbb5edf
parente1d9d03240b0c00e43c590e7c7643ab9a7955e13 (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.c37
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)
{