Unverified Commit 4767aed0 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!812 [sync] PR-761: net: stmmac: fix potential double free of dma descriptor resources

Merge Pull Request from: @openeuler-sync-bot 
 

Origin pull request: 
https://gitee.com/openeuler/kernel/pulls/761 
 
a double free problem in stmmac driver was triggered when doing mugen test,
After apply this patch the double free problem disappear. 
 
Link:https://gitee.com/openeuler/kernel/pulls/812

 

Reviewed-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parents 7c5fbbe0 d56d1a3b
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1635,10 +1635,15 @@ static void free_dma_rx_desc_resources(struct stmmac_priv *priv)
			dma_free_coherent(priv->device, priv->dma_rx_size *
					  sizeof(struct dma_extended_desc),
					  rx_q->dma_erx, rx_q->dma_rx_phy);
		rx_q->dma_rx = NULL;
		rx_q->dma_erx = NULL;

		kfree(rx_q->buf_pool);
		rx_q->buf_pool = NULL;

		if (rx_q->page_pool)
			page_pool_destroy(rx_q->page_pool);
		rx_q->page_pool = NULL;
	}
}

@@ -1675,8 +1680,15 @@ static void free_dma_tx_desc_resources(struct stmmac_priv *priv)

		dma_free_coherent(priv->device, size, addr, tx_q->dma_tx_phy);

		tx_q->dma_etx = NULL;
		tx_q->dma_entx = NULL;
		tx_q->dma_tx = NULL;

		kfree(tx_q->tx_skbuff_dma);
		tx_q->tx_skbuff_dma = NULL;

		kfree(tx_q->tx_skbuff);
		tx_q->tx_skbuff = NULL;
	}
}