net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues
[ Upstream commit 89f45c30172c80e55c887f32f1af8e184124577b ]
When dma_alloc_coherent() fails, we should free qdev->lrg_buf
to prevent potential memleak.
Fixes: 1357bfcf71
("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>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
c492f9c7d3
commit
0fc5fe6e41
@@ -2589,6 +2589,7 @@ static int ql_alloc_buffer_queues(struct ql3_adapter *qdev)
|
|||||||
|
|
||||||
if (qdev->lrg_buf_q_alloc_virt_addr == NULL) {
|
if (qdev->lrg_buf_q_alloc_virt_addr == NULL) {
|
||||||
netdev_err(qdev->ndev, "lBufQ failed\n");
|
netdev_err(qdev->ndev, "lBufQ failed\n");
|
||||||
|
kfree(qdev->lrg_buf);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
qdev->lrg_buf_q_virt_addr = qdev->lrg_buf_q_alloc_virt_addr;
|
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_size,
|
||||||
qdev->lrg_buf_q_alloc_virt_addr,
|
qdev->lrg_buf_q_alloc_virt_addr,
|
||||||
qdev->lrg_buf_q_alloc_phy_addr);
|
qdev->lrg_buf_q_alloc_phy_addr);
|
||||||
|
kfree(qdev->lrg_buf);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user