struct ath11k *ar = hw->priv;
        struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
        struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+       struct ath11k_peer *peer;
        int ret = 0;
 
        /* cancel must be done outside the mutex to avoid deadlock */
                                   sta->addr, arvif->vdev_id);
 
                ath11k_mac_dec_num_stations(arvif, sta);
+               spin_lock_bh(&ar->ab->base_lock);
+               peer = ath11k_peer_find(ar->ab, arvif->vdev_id, sta->addr);
+               if (peer && peer->sta == sta) {
+                       ath11k_warn(ar->ab, "Found peer entry %pM n vdev %i after it was supposedly removed\n",
+                                   vif->addr, arvif->vdev_id);
+                       peer->sta = NULL;
+                       list_del(&peer->list);
+                       kfree(peer);
+                       ar->num_peers--;
+               }
+               spin_unlock_bh(&ar->ab->base_lock);
 
                kfree(arsta->tx_stats);
                arsta->tx_stats = NULL;