net: designware: fix bus address dereference
authorBaruch Siach <baruch@tkos.co.il>
Wed, 18 Jun 2025 16:04:35 +0000 (19:04 +0300)
committerTom Rini <trini@konsulko.com>
Sun, 22 Jun 2025 16:16:29 +0000 (10:16 -0600)
Device bus address might not be valid for direct access when the bus
address and CPU address are not the same. Use dev_bus_to_phys() to
translate bus address back to CPU address.

Fixes: 3d98b8c504e15 ("net: designware: Invalidate RX buffer cache before freeing the DMA descriptor")
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
drivers/net/designware.c

index 0f93c25..fce3ef9 100644 (file)
@@ -716,7 +716,7 @@ static int _dw_free_pkt(struct dw_eth_dev *priv)
        ulong desc_start = (ulong)desc_p;
        ulong desc_end = desc_start +
                roundup(sizeof(*desc_p), ARCH_DMA_MINALIGN);
-       ulong data_start = desc_p->dmamac_addr;
+       ulong data_start = dev_bus_to_phys(priv->dev, desc_p->dmamac_addr);
        ulong data_end = data_start + roundup(CFG_ETH_BUFSIZE, ARCH_DMA_MINALIGN);
 
        /* Invalidate the descriptor buffer data */