diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index 3d0a12623f..ca5a122bd3 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -580,6 +580,14 @@ int dp_peer_add_ast(struct dp_soc *soc, txrx_ast_free_cb cb = NULL; void *cookie = NULL; struct dp_peer *tmp_peer = NULL; + bool is_peer_found = false; + + tmp_peer = dp_peer_find_hash_find(soc, mac_addr, 0, + DP_VDEV_ALL); + if (tmp_peer) { + dp_peer_unref_delete(tmp_peer); + is_peer_found = true; + } qdf_spin_lock_bh(&soc->ast_lock); if (peer->delete_in_progress) { @@ -629,10 +637,7 @@ int dp_peer_add_ast(struct dp_soc *soc, qdf_spin_unlock_bh(&soc->ast_lock); return 0; } - tmp_peer = dp_peer_find_hash_find(soc, mac_addr, 0, - DP_VDEV_ALL); - if (tmp_peer) { - dp_peer_unref_delete(tmp_peer); + if (is_peer_found) { qdf_spin_unlock_bh(&soc->ast_lock); return 0; }