[PATCH v2 0/4] wifi: ath12k: fix dest ring-buffer corruption

Baochen Qiang quic_bqiang at quicinc.com
Thu Jun 5 01:37:13 PDT 2025



On 6/4/2025 10:45 PM, Johan Hovold wrote:
> As a follow up to commit:
> 
> 	b67d2cf14ea ("wifi: ath12k: fix ring-buffer corruption")
> 
> add the remaining missing memory barriers to make sure that destination
> ring descriptors are read after the head pointers to avoid using stale
> data on weakly ordered architectures like aarch64.
> 
> Also switch back to plain accesses for the descriptor fields which is
> sufficient after the memory barrier.
> 
> New in v2 are two patches that add the missing barriers also for source
> rings and when updating the tail pointer for destination rings.
> 
> To avoid leaking ring details from the "hal" (lmac or non-lmac), the
> barriers are added to the ath12k_hal_srng_access_end() helper. For

Could you elaborate? what do you mean by "leaking ring details from the 'hal'"?

> symmetry I therefore moved also the dest ring barriers into
> ath12k_hal_srng_access_begin() and made the barrier conditional.
> 
> [ Due to this change I did not add Miaoqing's reviewed-by tag. ]
> 
> Johan
> 
> 
> Changes in v2:
>  - add tested-on tags to plain access patch
>  - move destination barriers into begin helper
>  - fix source ring corruption (new patch)
>  - fix dest ring corruption when ring is full (new patch)
> 
> 
> Johan Hovold (4):
>   wifi: ath12k: fix dest ring-buffer corruption
>   wifi: ath12k: use plain access for descriptor length
>   wifi: ath12k: fix source ring-buffer corruption
>   wifi: ath12k: fix dest ring-buffer corruption when ring is full
> 
>  drivers/net/wireless/ath/ath12k/ce.c  |  3 --
>  drivers/net/wireless/ath/ath12k/hal.c | 40 ++++++++++++++++++++++-----
>  2 files changed, 33 insertions(+), 10 deletions(-)
> 




More information about the ath12k mailing list