diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-01-18 18:33:01 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-01-18 18:33:01 +0000 |
commit | fe56cf969886fa8ddaa2eb212706a493d1e643cd (patch) | |
tree | c30ec582f3d5cb4a8b1f90c2526ac06d41a3ca83 | |
parent | 5e54d8c3174d8e785914cfaefe2f1fc7aa04ae61 (diff) | |
parent | 756f0c84d4f422224f318950fde02bc07bd3b6da (diff) | |
download | qca-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.c | 31 |
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 |