[PATCH net-next 4/4] net: spacemit: Free rings of memory after unmapping DMA
Vivian Wang
wangruikang at iscas.ac.cn
Tue Mar 3 01:24:21 PST 2026
In emac_free_{tx,rx}_resources, call dma_free_coherent() to unmap DMA
before calling kfree() to deallocate the memory, instead of the other
way around.
Fixes: bfec6d7f2001 ("net: spacemit: Add K1 Ethernet MAC")
Signed-off-by: Vivian Wang <wangruikang at iscas.ac.cn>
---
drivers/net/ethernet/spacemit/k1_emac.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/spacemit/k1_emac.c b/drivers/net/ethernet/spacemit/k1_emac.c
index f7f16397a2c2..02a009afc921 100644
--- a/drivers/net/ethernet/spacemit/k1_emac.c
+++ b/drivers/net/ethernet/spacemit/k1_emac.c
@@ -446,12 +446,12 @@ static void emac_free_tx_resources(struct emac_priv *priv)
emac_clean_tx_desc_ring(priv);
- kfree(tr->tx_desc_buf);
- tr->tx_desc_buf = NULL;
-
dma_free_coherent(dev, tr->total_size, tr->desc_addr,
tr->desc_dma_addr);
tr->desc_addr = NULL;
+
+ kfree(tr->tx_desc_buf);
+ tr->tx_desc_buf = NULL;
}
static void emac_free_rx_resources(struct emac_priv *priv)
@@ -461,12 +461,12 @@ static void emac_free_rx_resources(struct emac_priv *priv)
emac_clean_rx_desc_ring(priv);
- kfree(rr->rx_desc_buf);
- rr->rx_desc_buf = NULL;
-
dma_free_coherent(dev, rr->total_size, rr->desc_addr,
rr->desc_dma_addr);
rr->desc_addr = NULL;
+
+ kfree(rr->rx_desc_buf);
+ rr->rx_desc_buf = NULL;
}
static int emac_tx_clean_desc(struct emac_priv *priv)
--
2.53.0
More information about the linux-riscv
mailing list