Re: [PATCH net-next] net: ethernet: mtk_wed: Fix dma_unmap_single() size
From: Lorenzo Bianconi
Date: Thu Oct 15 2026 - 10:26:19 EST
> In mtk_wed_wo_queue_refill(), the entry->buf is DMA mapped with length
> q->buf_size which saved in entry->len. However, in mtk_wed_wo_dequeue(),
> the same buffer is DMA unmapped with length buf_len which is set to
> SKB_WITH_OVERHEAD(q->buf_size).
>
> Change the size to q->buf_size.
>
> This was discovered with static analysis and was only compile-tested.
>
> Fixes: 799684448e3e ("net: ethernet: mtk_wed: introduce wed wo support")
> Signed-off-by: Thomas Fourier <fourier.thomas@xxxxxxxxx>
> ---
> drivers/net/ethernet/mediatek/mtk_wed_wo.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/mediatek/mtk_wed_wo.c b/drivers/net/ethernet/mediatek/mtk_wed_wo.c
> index 7063c78bd35f..4f720ec53e20 100644
> --- a/drivers/net/ethernet/mediatek/mtk_wed_wo.c
> +++ b/drivers/net/ethernet/mediatek/mtk_wed_wo.c
> @@ -99,7 +99,6 @@ static void *
> mtk_wed_wo_dequeue(struct mtk_wed_wo *wo, struct mtk_wed_wo_queue *q, u32 *len,
> bool flush)
> {
> - int buf_len = SKB_WITH_OVERHEAD(q->buf_size);
> int index = (q->tail + 1) % q->n_desc;
> struct mtk_wed_wo_queue_entry *entry;
> struct mtk_wed_wo_queue_desc *desc;
> @@ -123,7 +122,7 @@ mtk_wed_wo_dequeue(struct mtk_wed_wo *wo, struct mtk_wed_wo_queue *q, u32 *len,
> *len = FIELD_GET(MTK_WED_WO_CTL_SD_LEN0,
> le32_to_cpu(READ_ONCE(desc->ctrl)));
> if (buf)
> - dma_unmap_single(wo->hw->dev, entry->addr, buf_len,
> + dma_unmap_single(wo->hw->dev, entry->addr, q->buf_size,
I guess you can use entry->len here to align with the tx side. Anyway:
Acked-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx>
> DMA_FROM_DEVICE);
> entry->buf = NULL;
>
> --
> 2.53.0
>
Attachment:
signature.asc
Description: PGP signature