diff --git a/ipa/core/src/wlan_ipa_core.c b/ipa/core/src/wlan_ipa_core.c index 000629d242..33be842cdd 100644 --- a/ipa/core/src/wlan_ipa_core.c +++ b/ipa/core/src/wlan_ipa_core.c @@ -1903,7 +1903,13 @@ wlan_ipa_uc_proc_pending_event(struct wlan_ipa_priv *ipa_ctx, bool is_loading) qdf_list_remove_front(&ipa_ctx->pending_event, (qdf_list_node_t **)&pending_event); while (pending_event != NULL) { - if (pending_event->is_loading == is_loading) { + struct wlan_objmgr_pdev *pdev = ipa_ctx->pdev; + struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev); + struct wlan_objmgr_vdev *vdev = + wlan_objmgr_get_vdev_by_id_from_psoc(psoc, + pending_event->session_id, + WLAN_IPA_ID); + if (pending_event->is_loading == is_loading && vdev) { __wlan_ipa_wlan_evt(pending_event->net_dev, pending_event->device_mode, pending_event->sta_id, @@ -1911,6 +1917,9 @@ wlan_ipa_uc_proc_pending_event(struct wlan_ipa_priv *ipa_ctx, bool is_loading) pending_event->type, pending_event->mac_addr); } + + if (vdev) + wlan_objmgr_vdev_release_ref(vdev, WLAN_IPA_ID); qdf_mem_free(pending_event); pending_event = NULL; qdf_list_remove_front(&ipa_ctx->pending_event,