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 --- 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