diff --git a/drivers/net/wireless/ath/ath12k/dp_tx.c b/drivers/net/wireless/ath/ath12k/dp_tx.c index 1d4444f3936f..c10da6195c9c 100644 --- a/drivers/net/wireless/ath/ath12k/dp_tx.c +++ b/drivers/net/wireless/ath/ath12k/dp_tx.c @@ -194,8 +194,6 @@ void ath12k_dp_tx_free_txbuf(struct ath12k_dp *dp, skb_cb = ATH12K_SKB_CB(msdu); - dp_pdev = ath12k_dp_to_pdev_dp(dp, pdev_idx); - dma_unmap_single(dp->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE); if (skb_cb->paddr_ext_desc) { dma_unmap_single(dp->dev, skb_cb->paddr_ext_desc, @@ -203,6 +201,10 @@ void ath12k_dp_tx_free_txbuf(struct ath12k_dp *dp, dev_kfree_skb_any(desc_params->skb_ext_desc); } + guard(rcu)(); + + dp_pdev = ath12k_dp_to_pdev_dp(dp, pdev_idx); + ieee80211_free_txskb(ath12k_pdev_dp_to_hw(dp_pdev), msdu); if (atomic_dec_and_test(&dp_pdev->num_tx_pending))