]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues
authorDinghao Liu <dinghao.liu@zju.edu.cn>
Wed, 27 Dec 2023 07:02:27 +0000 (15:02 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Jan 2024 17:51:18 +0000 (18:51 +0100)
[ Upstream commit 89f45c30172c80e55c887f32f1af8e184124577b ]

When dma_alloc_coherent() fails, we should free qdev->lrg_buf
to prevent potential memleak.

Fixes: 1357bfcf7106 ("qla3xxx: Dynamically size the rx buffer queue based on the MTU.")
Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
Link: https://lore.kernel.org/r/20231227070227.10527-1-dinghao.liu@zju.edu.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/qlogic/qla3xxx.c

index 29837e533cee8011b713c86cd5c9856a49daf194..127daad4410b9afc07b74f997d2f99efaa046c7a 100644 (file)
@@ -2589,6 +2589,7 @@ static int ql_alloc_buffer_queues(struct ql3_adapter *qdev)
 
        if (qdev->lrg_buf_q_alloc_virt_addr == NULL) {
                netdev_err(qdev->ndev, "lBufQ failed\n");
+               kfree(qdev->lrg_buf);
                return -ENOMEM;
        }
        qdev->lrg_buf_q_virt_addr = qdev->lrg_buf_q_alloc_virt_addr;
@@ -2613,6 +2614,7 @@ static int ql_alloc_buffer_queues(struct ql3_adapter *qdev)
                                  qdev->lrg_buf_q_alloc_size,
                                  qdev->lrg_buf_q_alloc_virt_addr,
                                  qdev->lrg_buf_q_alloc_phy_addr);
+               kfree(qdev->lrg_buf);
                return -ENOMEM;
        }