On 1/6/2026 5:04 AM, Thomas Fourier wrote:
> dma_alloc_coherent() allocates a DMA mapped buffer and stores the
> addresses in XXX_unaligned fields.  Those should be reused when freeing
> the buffer rather than the aligned addresses.
> 
> Fixes: 2a1e1ad3fd37 ("ath10k: Add support for 64 bit ce descriptor")
> Cc: <[email protected]>
> Signed-off-by: Thomas Fourier <[email protected]>

Reviewed-by: Baochen Qiang <[email protected]>

> ---
>  drivers/net/wireless/ath/ath10k/ce.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath10k/ce.c 
> b/drivers/net/wireless/ath/ath10k/ce.c
> index 7bbda46cfd93..82f120ee1c66 100644
> --- a/drivers/net/wireless/ath/ath10k/ce.c
> +++ b/drivers/net/wireless/ath/ath10k/ce.c
> @@ -1727,8 +1727,8 @@ static void _ath10k_ce_free_pipe(struct ath10k *ar, int 
> ce_id)
>                                 (ce_state->src_ring->nentries *
>                                  sizeof(struct ce_desc) +
>                                  CE_DESC_RING_ALIGN),
> -                               ce_state->src_ring->base_addr_owner_space,
> -                               ce_state->src_ring->base_addr_ce_space);
> +                               
> ce_state->src_ring->base_addr_owner_space_unaligned,
> +                               
> ce_state->src_ring->base_addr_ce_space_unaligned);
>               kfree(ce_state->src_ring);
>       }
>  
> @@ -1737,8 +1737,8 @@ static void _ath10k_ce_free_pipe(struct ath10k *ar, int 
> ce_id)
>                                 (ce_state->dest_ring->nentries *
>                                  sizeof(struct ce_desc) +
>                                  CE_DESC_RING_ALIGN),
> -                               ce_state->dest_ring->base_addr_owner_space,
> -                               ce_state->dest_ring->base_addr_ce_space);
> +                               
> ce_state->dest_ring->base_addr_owner_space_unaligned,
> +                               
> ce_state->dest_ring->base_addr_ce_space_unaligned);
>               kfree(ce_state->dest_ring);
>       }
>  
> @@ -1758,8 +1758,8 @@ static void _ath10k_ce_free_pipe_64(struct ath10k *ar, 
> int ce_id)
>                                 (ce_state->src_ring->nentries *
>                                  sizeof(struct ce_desc_64) +
>                                  CE_DESC_RING_ALIGN),
> -                               ce_state->src_ring->base_addr_owner_space,
> -                               ce_state->src_ring->base_addr_ce_space);
> +                               
> ce_state->src_ring->base_addr_owner_space_unaligned,
> +                               
> ce_state->src_ring->base_addr_ce_space_unaligned);
>               kfree(ce_state->src_ring);
>       }
>  
> @@ -1768,8 +1768,8 @@ static void _ath10k_ce_free_pipe_64(struct ath10k *ar, 
> int ce_id)
>                                 (ce_state->dest_ring->nentries *
>                                  sizeof(struct ce_desc_64) +
>                                  CE_DESC_RING_ALIGN),
> -                               ce_state->dest_ring->base_addr_owner_space,
> -                               ce_state->dest_ring->base_addr_ce_space);
> +                               
> ce_state->dest_ring->base_addr_owner_space_unaligned,
> +                               
> ce_state->dest_ring->base_addr_ce_space_unaligned);
>               kfree(ce_state->dest_ring);
>       }
>  

seems ath12k has the same issue, would you like to fix it as well?



Reply via email to