mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] IB/hfi1: Fix potential leaks in IPoIB TX queue initialization
@ 2026-11-11 12:23 Guangshuo Li
  2026-11-15 13:55 ` Leon Romanovsky
  0 siblings, 1 reply; 2+ messages in thread
From: Guangshuo Li @ 2026-11-11 12:23 UTC (permalink / raw)
  To: Dennis Dalessandro, Jason Gunthorpe, Leon Romanovsky
  Cc: linux-rdma, linux-kernel

When an SDMA header allocation fails, rollback skips the current TX
queue. Its ring and already allocated headers are leaked. Free the
partially initialized ring before unwinding the completed queues.

This issue was found by our static analysis tool under development.

Fixes: c874ad879c2f ("IB/hifi1: add a null check of kzalloc_node in hfi1_ipoib_txreq_init")
Signed-off-by: Guangshuo Li <liguangshuo@mail.sdu.edu.cn>
---
 drivers/infiniband/hw/hfi1/ipoib_tx.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/hfi1/ipoib_tx.c b/drivers/infiniband/hw/hfi1/ipoib_tx.c
index 8b9cc55db59d..2e9225b558b4 100644
--- a/drivers/infiniband/hw/hfi1/ipoib_tx.c
+++ b/drivers/infiniband/hw/hfi1/ipoib_tx.c
@@ -743,7 +743,7 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv)
 				kzalloc_node(sizeof(*tx->sdma_hdr),
 					     GFP_KERNEL, priv->dd->node);
 			if (!hfi1_txreq_from_idx(tx_ring, j)->sdma_hdr)
-				goto free_txqs;
+				goto free_tx_ring;
 		}
 
 		netif_napi_add_tx(dev, &txq->napi, hfi1_ipoib_poll_tx_ring);
@@ -751,6 +751,10 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv)
 
 	return 0;
 
+free_tx_ring:
+	while (j--)
+		kfree(hfi1_txreq_from_idx(tx_ring, j)->sdma_hdr);
+	kvfree(tx_ring->items);
 free_txqs:
 	for (i--; i >= 0; i--) {
 		struct hfi1_ipoib_txq *txq = &priv->txqs[i];

base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] IB/hfi1: Fix potential leaks in IPoIB TX queue initialization
  2026-11-11 12:23 [PATCH] IB/hfi1: Fix potential leaks in IPoIB TX queue initialization Guangshuo Li
@ 2026-11-15 13:55 ` Leon Romanovsky
  0 siblings, 0 replies; 2+ messages in thread
From: Leon Romanovsky @ 2026-11-15 13:55 UTC (permalink / raw)
  To: Guangshuo Li
  Cc: Dennis Dalessandro, Jason Gunthorpe, linux-rdma, linux-kernel

On Wed, Nov 11, 2026 at 08:23:19PM +0800, Guangshuo Li wrote:
> When an SDMA header allocation fails, rollback skips the current TX
> queue. Its ring and already allocated headers are leaked. Free the
> partially initialized ring before unwinding the completed queues.

free_tx_ring already performs that, see "for (j = 0; j < tx_ring_size; j++)"
loop.

Thanks

> 
> This issue was found by our static analysis tool under development.
> 
> Fixes: c874ad879c2f ("IB/hifi1: add a null check of kzalloc_node in hfi1_ipoib_txreq_init")
> Signed-off-by: Guangshuo Li <liguangshuo@mail.sdu.edu.cn>
> ---
>  drivers/infiniband/hw/hfi1/ipoib_tx.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/infiniband/hw/hfi1/ipoib_tx.c b/drivers/infiniband/hw/hfi1/ipoib_tx.c
> index 8b9cc55db59d..2e9225b558b4 100644
> --- a/drivers/infiniband/hw/hfi1/ipoib_tx.c
> +++ b/drivers/infiniband/hw/hfi1/ipoib_tx.c
> @@ -743,7 +743,7 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv)
>  				kzalloc_node(sizeof(*tx->sdma_hdr),
>  					     GFP_KERNEL, priv->dd->node);
>  			if (!hfi1_txreq_from_idx(tx_ring, j)->sdma_hdr)
> -				goto free_txqs;
> +				goto free_tx_ring;
>  		}
>  
>  		netif_napi_add_tx(dev, &txq->napi, hfi1_ipoib_poll_tx_ring);
> @@ -751,6 +751,10 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv)
>  
>  	return 0;
>  
> +free_tx_ring:
> +	while (j--)
> +		kfree(hfi1_txreq_from_idx(tx_ring, j)->sdma_hdr);
> +	kvfree(tx_ring->items);
>  free_txqs:
>  	for (i--; i >= 0; i--) {
>  		struct hfi1_ipoib_txq *txq = &priv->txqs[i];
> 
> base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-15 13:55 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-11 12:23 [PATCH] IB/hfi1: Fix potential leaks in IPoIB TX queue initialization Guangshuo Li
2026-11-15 13:55 ` Leon Romanovsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®