wlan: Prevent memory access to already freed pointer

Prevent memory access to already freed pointer

Change-Id: I8f4f2888ffc8ea0444855e2ebe0eba9d17c00df9
CRs-Fixed: 693681
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index 8592c31..d79a867 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -3897,7 +3897,6 @@
     //Store this value to use in TPC report IE.
     rrmCacheMgmtTxPower( pMac, pChnlParams->txMgmtPower, psessionEntry );
 #endif
-    vos_mem_free(body);
     channelChangeReasonCode = psessionEntry->channelChangeReasonCode;
     // initialize it back to invalid id
     psessionEntry->channelChangeReasonCode = 0xBAD;
@@ -3945,6 +3944,9 @@
         default:
             break;
     }
+    vos_mem_free(body);
+    body = NULL;
+
 }
 /**
  * limProcessStartScanRsp()
@@ -4122,8 +4124,6 @@
     SET_LIM_PROCESS_DEFD_MESGS(pMac, true);
     pFinishScanParam = (tpFinishScanParams) body;
     status = pFinishScanParam->status;
-    vos_mem_free(body);
-    body = NULL;
 
     limLog(pMac, LOG1, FL("Rcvd FinishScanRsp in state %d channel %d "),
                           pMac->lim.gLimHalScanState,
@@ -4168,6 +4168,8 @@
             else
             {
                limLog( pMac, LOGP, "No Resume link callback set but station is in suspend state");
+               vos_mem_free(body);
+               body = NULL;
                return;
             }
             break;
@@ -4178,6 +4180,8 @@
                         pMac->lim.gLimHalScanState);
             break;
     }
+    vos_mem_free(body);
+    body = NULL;
     return;
 }
 /**