mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
wifi: ath12k: change DMA direction while mapping reinjected packets
[ Upstream commit 33322e3ef07409278a18c6919c448e369d66a18e ]
For fragmented packets, ath12k reassembles each fragment as a normal
packet and then reinjects it into HW ring. In this case, the DMA
direction should be DMA_TO_DEVICE, not DMA_FROM_DEVICE. Otherwise,
an invalid payload may be reinjected into the HW and
subsequently delivered to the host.
Given that arbitrary memory can be allocated to the skb buffer,
knowledge about the data contained in the reinjected buffer is lacking.
Consequently, there’s a risk of private information being leaked.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00209-QCAHKSWPL_SILICONZ-1
Fixes: d889913205 ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Co-developed-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240520070045.631029-2-quic_ppranees@quicinc.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
7797efc98e
commit
e99d9b16ff
@@ -3024,7 +3024,7 @@ static int ath12k_dp_rx_h_defrag_reo_reinject(struct ath12k *ar,
|
||||
|
||||
buf_paddr = dma_map_single(ab->dev, defrag_skb->data,
|
||||
defrag_skb->len + skb_tailroom(defrag_skb),
|
||||
DMA_FROM_DEVICE);
|
||||
DMA_TO_DEVICE);
|
||||
if (dma_mapping_error(ab->dev, buf_paddr))
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -3110,7 +3110,7 @@ err_free_desc:
|
||||
spin_unlock_bh(&dp->rx_desc_lock);
|
||||
err_unmap_dma:
|
||||
dma_unmap_single(ab->dev, buf_paddr, defrag_skb->len + skb_tailroom(defrag_skb),
|
||||
DMA_FROM_DEVICE);
|
||||
DMA_TO_DEVICE);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user