diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 327e612edc..b4a7e7c096 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -10287,9 +10287,17 @@ csr_roam_chk_lnk_disassoc_ind(tpAniSirGlobal mac_ctx, tSirSmeRsp *msg_ptr) QDF_STATUS status; tCsrRoamInfo *roam_info_ptr = NULL; tSirSmeDisassocInd *pDisassocInd; - tSmeCmd cmd; + tSmeCmd *cmd; tCsrRoamInfo roam_info; + cmd = qdf_mem_malloc(sizeof(*cmd)); + if (NULL == cmd) { + sms_log(mac_ctx, LOGE, + FL("memory allocation failed for size = %ld"), + sizeof(*cmd)); + return; + } + /* * Check if AP dis-associated us because of MIC failure. If so, * then we need to take action immediately and not wait till the @@ -10303,6 +10311,7 @@ csr_roam_chk_lnk_disassoc_ind(tpAniSirGlobal mac_ctx, tSirSmeRsp *msg_ptr) sms_log(mac_ctx, LOGE, FL("Session Id not found for BSSID " MAC_ADDRESS_STR), MAC_ADDR_ARRAY(pDisassocInd->bssid.bytes)); + qdf_mem_free(cmd); return; } @@ -10338,6 +10347,7 @@ csr_roam_chk_lnk_disassoc_ind(tpAniSirGlobal mac_ctx, tSirSmeRsp *msg_ptr) session = CSR_GET_SESSION(mac_ctx, sessionId); if (!session) { sms_log(mac_ctx, LOGE, FL("session %d not found"), sessionId); + qdf_mem_free(cmd); return; } if (csr_is_conn_state_infra(mac_ctx, sessionId)) @@ -10367,15 +10377,16 @@ csr_roam_chk_lnk_disassoc_ind(tpAniSirGlobal mac_ctx, tSirSmeRsp *msg_ptr) * STA/P2P client got disassociated so remove any pending * deauth commands in sme pending list */ - cmd.command = eSmeCommandRoam; - cmd.sessionId = (uint8_t) sessionId; - cmd.u.roamCmd.roamReason = eCsrForcedDeauthSta; - qdf_mem_copy(cmd.u.roamCmd.peerMac, + cmd->command = eSmeCommandRoam; + cmd->sessionId = (uint8_t) sessionId; + cmd->u.roamCmd.roamReason = eCsrForcedDeauthSta; + qdf_mem_copy(cmd->u.roamCmd.peerMac, pDisassocInd->peer_macaddr.bytes, QDF_MAC_ADDR_SIZE); - csr_roam_remove_duplicate_command(mac_ctx, sessionId, &cmd, + csr_roam_remove_duplicate_command(mac_ctx, sessionId, cmd, eCsrForcedDeauthSta); } + qdf_mem_free(cmd); } static void