wifi: ath12k: fix DMA unmap warning on NULL DMA address
authorBaochen Qiang <quic_bqiang@quicinc.com>
Wed, 20 Sep 2023 13:43:42 +0000 (16:43 +0300)
committerKalle Valo <quic_kvalo@quicinc.com>
Thu, 21 Sep 2023 08:02:36 +0000 (11:02 +0300)
In ath12k_dp_tx(), if we reach fail_dma_unmap due to some errors,
current code does DMA unmap unconditionally on skb_cb->paddr_ext_desc.
However, skb_cb->paddr_ext_desc may be NULL and thus we get below
warning:

kernel: [ 8887.076212] WARNING: CPU: 3 PID: 0 at drivers/iommu/dma-iommu.c:1077 iommu_dma_unmap_page+0x79/0x90

Fix it by checking skb_cb->paddr_ext_desc before unmap it.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4

Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230830021131.5610-1-quic_bqiang@quicinc.com
drivers/net/wireless/ath/ath12k/dp_tx.c

index 8874c815d7faf8bdf04094f2cd90f525e50cfa95..16d889fc204333d85ec246e9ac57357175850e21 100644 (file)
@@ -330,8 +330,11 @@ tcl_ring_sel:
 
 fail_unmap_dma:
        dma_unmap_single(ab->dev, ti.paddr, ti.data_len, DMA_TO_DEVICE);
-       dma_unmap_single(ab->dev, skb_cb->paddr_ext_desc,
-                        sizeof(struct hal_tx_msdu_ext_desc), DMA_TO_DEVICE);
+
+       if (skb_cb->paddr_ext_desc)
+               dma_unmap_single(ab->dev, skb_cb->paddr_ext_desc,
+                                sizeof(struct hal_tx_msdu_ext_desc),
+                                DMA_TO_DEVICE);
 
 fail_remove_tx_buf:
        ath12k_dp_tx_release_txbuf(dp, tx_desc, pool_id);