Commit ce4a75c8 authored by Dinghao Liu's avatar Dinghao Liu Committed by sanglipeng1
Browse files

net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues

stable inclusion
from stable-v5.10.208
commit 0fc5fe6e4134544c5135592286d96ae22e0c7692
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I9T22K

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0fc5fe6e4134544c5135592286d96ae22e0c7692



--------------------------------

[ Upstream commit 89f45c30172c80e55c887f32f1af8e184124577b ]

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

Fixes: 1357bfcf ("qla3xxx: Dynamically size the rx buffer queue based on the MTU.")
Signed-off-by: default avatarDinghao Liu <dinghao.liu@zju.edu.cn>
Link: https://lore.kernel.org/r/20231227070227.10527-1-dinghao.liu@zju.edu.cn


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarsanglipeng1 <sanglipeng1@jd.com>
parent 8fcc0e02
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
	}