wlan: Remove memory free call which leads to double free
Remove memory free call which leads to double free &
ignore the contains of the fw rsp if it is a failure
Change-Id: Ibe24ce2e87aed5862d94b70e8fab0014cdce18fb
CR-fixed: 466297
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 738d9f0..a69837c 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -7700,7 +7700,7 @@
{
if ( uMsgSize <= sizeof(tConfigBssParams) )
{
- wpalMemoryCopy( pSendBuffer+usDataOffset,
+ wpalMemoryCopy( pSendBuffer+usDataOffset,
&halConfigBssReqMsg.uBssParams.configBssParams,
uMsgSize);
}
@@ -16980,7 +16980,7 @@
WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
wpt_uint16 index;
wpt_uint16 TidIndex;
-
+ WDI_Status halTriggerBARspStatus;
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/*-------------------------------------------------------------------------
@@ -17002,23 +17002,25 @@
-------------------------------------------------------------------------*/
halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
- wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
+ halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
+
+ if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
+ {
+ wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
halTriggerBARsp->baCandidateCnt *
sizeof(WDI_TriggerBARspCandidateType));
- if(NULL == wdiTriggerBARsp)
- {
- WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
- "Failed to allocate memory in Trigger BA Response %x %x %x ",
- pWDICtx, pEventData, pEventData->pEventData);
- wpalMemoryFree(halTriggerBARsp);
- WDI_ASSERT(0);
- return WDI_STATUS_E_FAILURE;
- }
- wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
+ if(NULL == wdiTriggerBARsp)
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
+ "Failed to allocate memory in Trigger BA Response %x %x %x ",
+ pWDICtx, pEventData, pEventData->pEventData);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
- if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
- {
+ wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
+
wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
@@ -17041,6 +17043,22 @@
halBaCandidate++;
}
}
+ else
+ {
+ wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
+
+ if(NULL == wdiTriggerBARsp)
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
+ "Failed to allocate memory in Trigger BA Response %x %x %x ",
+ pWDICtx, pEventData, pEventData->pEventData);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+ wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
+
+ }
/*Notify UMAC*/
wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);