Re: [PATCH net-next] drivers: net: xgene: Fix dma_unmap_single() size

From: Thomas Fourier

Date: Thu Oct 15 2026 - 08:53:36 EST


Hi Daniel,
Hi Thomas,

In xgene_enet_refill_pagepool(), the skb->data is dma-mapped with length

To me, it looks like the mapping happens in xgene_enet_refill_bufpool() and not
xgene_enet_refill_pagepool().>
len which is set to XGENE_ENET_STD_MTU which equals 1536. However, in
xgene_enet_delete_bufpool(), the same buffer is unmapped with length
XGENE_ENET_MAX_MTU which is 9600. This may erroneously unmap other
DMA buffers or cause other issues.

Change unmap length to XGENE_ENET_STD_MTU.

Fixes: 6e434627bce2 ("drivers: net: xgene: fix: Add dma_unmap_single")

That commit mapped and unmapped with XGENE_ENET_MAX_MTU. At that point, there
was no mismatch. I think the mismatch came with:

Fixes: a9380b0f7be8 ("drivers: net: xgene: Add support for Jumbo frame")

Signed-off-by: Thomas Fourier <fourier.thomas@xxxxxxxxx>
---
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
index 507db46daf2b..2ddcbf27014e 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
@@ -185,7 +185,7 @@ static void xgene_enet_delete_bufpool(struct xgene_enet_desc_ring *buf_pool)
raw_desc = &buf_pool->raw_desc16[i];
dma_addr = GET_VAL(DATAADDR, le64_to_cpu(raw_desc->m1));
- dma_unmap_single(dev, dma_addr, XGENE_ENET_MAX_MTU,
+ dma_unmap_single(dev, dma_addr, XGENE_ENET_STD_MTU,
DMA_FROM_DEVICE);
}
}
--
2.53.0


/Daniel

Thank you for your comments, I agree with both, I am submitting a v2.
Best,
Thomas