Wlan: Fix for a double free and recover logic in DXE
DXE rx path frees a buffer which is already freed after a wrong recovery
logic trigger
Change-Id: I67003a2338ad16169e92a6d6131a8c83133a08c4
CR-Fixed: 400621
diff --git a/CORE/DXE/src/wlan_qct_dxe.c b/CORE/DXE/src/wlan_qct_dxe.c
index 531b370..b63abb1 100644
--- a/CORE/DXE/src/wlan_qct_dxe.c
+++ b/CORE/DXE/src/wlan_qct_dxe.c
@@ -1638,6 +1638,7 @@
/* Reap Rx frames */
rx_reaped_buf[frameCount] = currentCtrlBlk->xfrFrame;
frameCount++;
+ currentCtrlBlk->xfrFrame = NULL;
/* Now try to refill the ring with empty Rx buffers to keep DXE busy */
dxeRXFrameRefillRing(dxeCtxt,channelEntry);
@@ -1780,6 +1781,7 @@
frameCount = dxeRXFrameRouteUpperLayer(dxeCtxt, channelEntry);
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
"re-sync routed %d frames to upper layer", (int)frameCount);
+ channelEntry->numFragmentCurrentChain = frameCount;
frameCount = 0;
}
/* Successive Empty interrupt