summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-01-18 18:33:01 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-01-18 18:33:01 +0000
commitfe56cf969886fa8ddaa2eb212706a493d1e643cd (patch)
treec30ec582f3d5cb4a8b1f90c2526ac06d41a3ca83
parent5e54d8c3174d8e785914cfaefe2f1fc7aa04ae61 (diff)
parent756f0c84d4f422224f318950fde02bc07bd3b6da (diff)
downloadqca-wfi-host-cmn-android-msm-eos-android13-wear-kr3-pixel-watch.tar.gz
Merge cherrypicks of ['partner-android-review.googlesource.com/2713571'] into android13-msm-pixelwatch-5.15-24Q1-release.android-wear-13.0.0_r0.12android-msm-eos-android13-wear-kr3-pixel-watch
Change-Id: I6c9353f5619dec3a834e4c3e30e30468a1049005
-rw-r--r--umac/scan/dispatcher/src/wlan_scan_utils_api.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/umac/scan/dispatcher/src/wlan_scan_utils_api.c b/umac/scan/dispatcher/src/wlan_scan_utils_api.c
index 820e7ba8c..e5a50da2d 100644
--- a/umac/scan/dispatcher/src/wlan_scan_utils_api.c
+++ b/umac/scan/dispatcher/src/wlan_scan_utils_api.c
@@ -2851,8 +2851,10 @@ static QDF_STATUS util_scan_parse_mbssid(struct wlan_objmgr_pdev *pdev,
subie_len,
mbssid_info.split_prof_continue,
mbssid_info.prof_residue);
- if (mbssid_info.split_prof_continue)
+ if (mbssid_info.split_prof_continue) {
qdf_mem_free(split_prof_start);
+ split_prof_start = NULL;
+ }
qdf_mem_free(new_ie);
return QDF_STATUS_E_INVAL;
@@ -2874,6 +2876,7 @@ static QDF_STATUS util_scan_parse_mbssid(struct wlan_objmgr_pdev *pdev,
subelement[ID_POS],
subelement[TAG_LEN_POS]);
qdf_mem_free(split_prof_start);
+ split_prof_start = NULL;
qdf_mem_free(new_ie);
return QDF_STATUS_E_INVAL;
} else if (retval == INVALID_NONTX_PROF) {
@@ -2986,14 +2989,22 @@ static QDF_STATUS util_scan_parse_mbssid(struct wlan_objmgr_pdev *pdev,
subie_len, new_ie,
mbssid_info.profile_num);
- if (!new_ie_len)
+ if (!new_ie_len) {
+ if (mbssid_info.split_prof_continue) {
+ qdf_mem_free(split_prof_start);
+ split_prof_start = NULL;
+ split_prof_end = NULL;
+ }
continue;
+ }
new_frame_len = frame_len - ielen + new_ie_len;
if (new_frame_len < 0) {
- if (mbssid_info.split_prof_continue)
+ if (mbssid_info.split_prof_continue) {
qdf_mem_free(split_prof_start);
+ split_prof_start = NULL;
+ }
qdf_mem_free(new_ie);
scm_err("Invalid frame:Stop MBSSIE parsing");
scm_err("Frame_len: %zu,ielen:%u,new_ie_len:%u",
@@ -3003,8 +3014,10 @@ static QDF_STATUS util_scan_parse_mbssid(struct wlan_objmgr_pdev *pdev,
new_frame = qdf_mem_malloc(new_frame_len);
if (!new_frame) {
- if (mbssid_info.split_prof_continue)
+ if (mbssid_info.split_prof_continue) {
qdf_mem_free(split_prof_start);
+ split_prof_start = NULL;
+ }
qdf_mem_free(new_ie);
scm_err_rl("Malloc for new_frame failed");
scm_err_rl("split_prof_continue: %d",
@@ -3044,6 +3057,8 @@ static QDF_STATUS util_scan_parse_mbssid(struct wlan_objmgr_pdev *pdev,
if (QDF_IS_STATUS_ERROR(status)) {
if (mbssid_info.split_prof_continue) {
qdf_mem_free(split_prof_start);
+ split_prof_start = NULL;
+ split_prof_end = NULL;
qdf_mem_zero(&mbssid_info,
sizeof(mbssid_info));
}
@@ -3054,8 +3069,11 @@ static QDF_STATUS util_scan_parse_mbssid(struct wlan_objmgr_pdev *pdev,
break;
}
/* scan entry makes its own copy so free the frame*/
- if (mbssid_info.split_prof_continue)
+ if (mbssid_info.split_prof_continue) {
qdf_mem_free(split_prof_start);
+ split_prof_start = NULL;
+ split_prof_end = NULL;
+ }
qdf_mem_free(new_frame);
}
@@ -3063,6 +3081,9 @@ static QDF_STATUS util_scan_parse_mbssid(struct wlan_objmgr_pdev *pdev,
}
qdf_mem_free(new_ie);
+ if (split_prof_start)
+ qdf_mem_free(split_prof_start);
+
return QDF_STATUS_SUCCESS;
}
#else