diff options
author | Kang Chen <void0red@gmail.com> | 2023-02-27 11:02:12 +0100 |
---|---|---|
committer | Leon Romanovsky <leon@kernel.org> | 2023-03-13 12:51:28 +0100 |
commit | c874ad879c2f29ebe040a34b974389875c0d81eb (patch) | |
tree | 630f97e91a15ce8f077d70d3645f912f87c6a11d /drivers/infiniband/hw | |
parent | Linux 6.3-rc2 (diff) | |
download | linux-c874ad879c2f29ebe040a34b974389875c0d81eb.tar.xz linux-c874ad879c2f29ebe040a34b974389875c0d81eb.zip |
IB/hifi1: add a null check of kzalloc_node in hfi1_ipoib_txreq_init
kzalloc_node may fails, check it and do the cleanup.
Fixes: b1151b74ff68 ("IB/hfi1: Fix alloc failure with larger txqueuelen")
Signed-off-by: Kang Chen <void0red@gmail.com>
Link: https://lore.kernel.org/r/20230227100212.910820-1-void0red@gmail.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Diffstat (limited to 'drivers/infiniband/hw')
-rw-r--r-- | drivers/infiniband/hw/hfi1/ipoib_tx.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/hfi1/ipoib_tx.c b/drivers/infiniband/hw/hfi1/ipoib_tx.c index 5d9a7b09ca37..349eb4139136 100644 --- a/drivers/infiniband/hw/hfi1/ipoib_tx.c +++ b/drivers/infiniband/hw/hfi1/ipoib_tx.c @@ -737,10 +737,13 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv) txq->tx_ring.shift = ilog2(tx_item_size); txq->tx_ring.avail = hfi1_ipoib_ring_hwat(txq); tx_ring = &txq->tx_ring; - for (j = 0; j < tx_ring_size; j++) + for (j = 0; j < tx_ring_size; j++) { hfi1_txreq_from_idx(tx_ring, j)->sdma_hdr = kzalloc_node(sizeof(*tx->sdma_hdr), GFP_KERNEL, priv->dd->node); + if (!hfi1_txreq_from_idx(tx_ring, j)->sdma_hdr) + goto free_txqs; + } netif_napi_add_tx(dev, &txq->napi, hfi1_ipoib_poll_tx_ring); } |