[PATCH] net: stmmac: free RX resources when TX allocation fails
Wentao Liang
vulab at iscas.ac.cn
Tue Nov 3 02:28:57 PST 2026
alloc_dma_rx_desc_resources() unwinds the RX queues when the RX
allocation itself fails, and alloc_dma_tx_desc_resources() unwinds the
TX queues when the TX allocation fails. But when the RX allocation
succeeds and the TX allocation then fails, the RX queues that were
already set up are left behind. stmmac_setup_dma_desc() only frees the
dma_conf on this path, so the RX DMA rings, page pools and socket
buffers are leaked.
Release the RX queues from alloc_dma_desc_resources() when the TX
allocation fails, before the caller drops the partially populated
dma_conf.
Fixes: ba39b344e924 ("net: ethernet: stmicro: stmmac: generate stmmac dma conf before open")
Cc: stable at vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab at iscas.ac.cn>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 9ded31150fbe..049d85b3e25f 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2446,6 +2446,8 @@ static int alloc_dma_desc_resources(struct stmmac_priv *priv,
return ret;
ret = alloc_dma_tx_desc_resources(priv, dma_conf);
+ if (ret)
+ free_dma_rx_desc_resources(priv, dma_conf);
return ret;
}
--
2.34.1
More information about the linux-arm-kernel
mailing list