* [PATCH net-next] net: ethernet: mtk_wed: Fix dma_unmap_single() size
@ 2026-10-15 14:01 Thomas Fourier
2026-10-15 14:19 ` Lorenzo Bianconi
0 siblings, 1 reply; 2+ messages in thread
From: Thomas Fourier @ 2026-10-15 14:01 UTC (permalink / raw)
Cc: Thomas Fourier, Felix Fietkau, Lorenzo Bianconi, Andrew Lunn,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Matthias Brugger, AngeloGioacchino Del Regno, Sujuan Chen,
open list:MEDIATEK ETHERNET DRIVER,
open list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support
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@gmail.com>
---
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,
DMA_FROM_DEVICE);
entry->buf = NULL;
--
2.53.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net-next] net: ethernet: mtk_wed: Fix dma_unmap_single() size
2026-10-15 14:01 [PATCH net-next] net: ethernet: mtk_wed: Fix dma_unmap_single() size Thomas Fourier
@ 2026-10-15 14:19 ` Lorenzo Bianconi
0 siblings, 0 replies; 2+ messages in thread
From: Lorenzo Bianconi @ 2026-10-15 14:19 UTC (permalink / raw)
To: Thomas Fourier
Cc: Felix Fietkau, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Matthias Brugger,
AngeloGioacchino Del Regno, Sujuan Chen,
open list:MEDIATEK ETHERNET DRIVER,
open list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support
[-- Attachment #1: Type: text/plain, Size: 1739 bytes --]
> 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@gmail.com>
> ---
> 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@kernel.org>
> DMA_FROM_DEVICE);
> entry->buf = NULL;
>
> --
> 2.53.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-15 14:19 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-15 14:01 [PATCH net-next] net: ethernet: mtk_wed: Fix dma_unmap_single() size Thomas Fourier
2026-10-15 14:19 ` Lorenzo Bianconi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox