Commit 9282a1e1 authored by Thomas Fourier's avatar Thomas Fourier Committed by Jeff Johnson
Browse files

wifi: ath10k: fix dma_free_coherent() pointer



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: 2a1e1ad3 ("ath10k: Add support for 64 bit ce descriptor")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarThomas Fourier <fourier.thomas@gmail.com>
Reviewed-by: default avatarBaochen Qiang <baochen.qiang@oss.qualcomm.com>
Link: https://patch.msgid.link/20260105210439.20131-2-fourier.thomas@gmail.com


Signed-off-by: default avatarJeff Johnson <jeff.johnson@oss.qualcomm.com>
parent a203dbee
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -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);
	}