diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index b7fbcf8d3a37..83c68a73b4af 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -7991,15 +7991,15 @@ hdd_rx_mic_error_ind(struct cdp_ctrl_objmgr_psoc *psoc, uint8_t pdev_id, hdd_ctx = wiphy_priv(wiphy); if (wlan_hdd_validate_context(hdd_ctx)) - return; + goto release_ref_and_return; adapter = hdd_get_adapter_by_vdev(hdd_ctx, mic_failure_info->vdev_id); if (hdd_validate_adapter(adapter)) - return; + goto release_ref_and_return; hdd_mic_info = qdf_mem_malloc(sizeof(*hdd_mic_info)); if (!hdd_mic_info) - return; + goto release_ref_and_return; qdf_copy_macaddr(&hdd_mic_info->ta_mac_addr, &mic_failure_info->ta_mac_addr); @@ -8013,7 +8013,7 @@ hdd_rx_mic_error_ind(struct cdp_ctrl_objmgr_psoc *psoc, uint8_t pdev_id, if (adapter->mic_work.status != MIC_INITIALIZED) { qdf_spin_unlock_bh(&adapter->mic_work.lock); qdf_mem_free(hdd_mic_info); - return; + goto release_ref_and_return; } /* * Store mic error info pointer in adapter @@ -8024,6 +8024,9 @@ hdd_rx_mic_error_ind(struct cdp_ctrl_objmgr_psoc *psoc, uint8_t pdev_id, adapter->mic_work.info = hdd_mic_info; qdf_sched_work(0, &adapter->mic_work.work); qdf_spin_unlock_bh(&adapter->mic_work.lock); + +release_ref_and_return: + wlan_objmgr_pdev_release_ref(pdev, WLAN_MLME_SB_ID); } /* wake lock APIs for HDD */