diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 2296ceee636d..182f6e4978a4 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -573,6 +573,9 @@ QDF_STATUS sme_ser_cmd_callback(void *buf, break; case WLAN_SER_CB_RELEASE_MEM_CMD: sme_debug("WLAN_SER_CB_RELEASE_MEM_CMD callback"); + if (cmd->vdev) + wlan_objmgr_vdev_release_ref(cmd->vdev, + WLAN_LEGACY_SME_ID); sme_cmd = cmd->umac_cmd; csr_release_command_buffer(mac_ctx, sme_cmd); break; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 01dff3074736..859108596421 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -20437,9 +20437,6 @@ QDF_STATUS csr_queue_sme_command(tpAniSirGlobal mac_ctx, tSmeCmd *sme_cmd, ser_cmd_status = wlan_serialization_request(&cmd); sme_debug("wlan_serialization_request status:%d", ser_cmd_status); - if (vdev) - wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); - switch (ser_cmd_status) { case WLAN_SER_CMD_PENDING: case WLAN_SER_CMD_ACTIVE: @@ -20460,7 +20457,11 @@ QDF_STATUS csr_queue_sme_command(tpAniSirGlobal mac_ctx, tSmeCmd *sme_cmd, return status; error: + if (vdev) + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); + csr_release_command_buffer(mac_ctx, sme_cmd); + return QDF_STATUS_E_FAILURE; }