Unverified Commit ca354b1d authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!13921 wifi: ath10k: Fix memory leak in management tx

parents d96c2ce0 f7754e40
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -3035,9 +3035,14 @@ ath10k_wmi_tlv_op_cleanup_mgmt_tx_send(struct ath10k *ar,
				       struct sk_buff *msdu)
{
	struct ath10k_skb_cb *cb = ATH10K_SKB_CB(msdu);
	struct ath10k_mgmt_tx_pkt_addr *pkt_addr;
	struct ath10k_wmi *wmi = &ar->wmi;

	idr_remove(&wmi->mgmt_pending_tx, cb->msdu_id);
	spin_lock_bh(&ar->data_lock);
	pkt_addr = idr_remove(&wmi->mgmt_pending_tx, cb->msdu_id);
	spin_unlock_bh(&ar->data_lock);

	kfree(pkt_addr);

	return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -2420,6 +2420,7 @@ wmi_process_mgmt_tx_comp(struct ath10k *ar, struct mgmt_tx_compl_params *param)
	dma_unmap_single(ar->dev, pkt_addr->paddr,
			 msdu->len, DMA_TO_DEVICE);
	info = IEEE80211_SKB_CB(msdu);
	kfree(pkt_addr);

	if (param->status) {
		info->flags &= ~IEEE80211_TX_STAT_ACK;
@@ -9561,6 +9562,7 @@ static int ath10k_wmi_mgmt_tx_clean_up_pending(int msdu_id, void *ptr,
	dma_unmap_single(ar->dev, pkt_addr->paddr,
			 msdu->len, DMA_TO_DEVICE);
	ieee80211_free_txskb(ar->hw, msdu);
	kfree(pkt_addr);

	return 0;
}