Commit fbeaed26 authored by Weili Qian's avatar Weili Qian Committed by Zheng Zengkai
Browse files

crypto: hisilicon/qm - fix missing destroy qp_idr

mainline inclusion
from mainline-v6.1-rc1
commit 116be08f
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5T7AD
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=116be08f6e4e385733d42360a33c3d883d2dd702



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

In the function hisi_qm_memory_init(), if resource alloc fails after
idr_init, the initialized qp_idr needs to be destroyed.

Signed-off-by: default avatarWeili Qian <qianweili@huawei.com>
Signed-off-by: default avatarYang Shen <shenyang39@huawei.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarJiangshui Yang <yangjiangshui@h-partners.com>
Reviewed-by: default avatarXiu Jianfeng <xiujianfeng@huawei.com>
Reviewed-by: default avatarYang Shen <shenyang39@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 72662e79
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -6145,7 +6145,7 @@ static int hisi_qm_memory_init(struct hisi_qm *qm)
	dev_dbg(dev, "allocate qm dma buf size=%zx)\n", qm->qdma.size);
	dev_dbg(dev, "allocate qm dma buf size=%zx)\n", qm->qdma.size);
	if (!qm->qdma.va) {
	if (!qm->qdma.va) {
		ret = -ENOMEM;
		ret = -ENOMEM;
		goto err_alloc_qdma;
		goto err_destroy_idr;
	}
	}


	QM_INIT_BUF(qm, eqe, QM_EQ_DEPTH);
	QM_INIT_BUF(qm, eqe, QM_EQ_DEPTH);
@@ -6161,7 +6161,8 @@ static int hisi_qm_memory_init(struct hisi_qm *qm)


err_alloc_qp_array:
err_alloc_qp_array:
	dma_free_coherent(dev, qm->qdma.size, qm->qdma.va, qm->qdma.dma);
	dma_free_coherent(dev, qm->qdma.size, qm->qdma.va, qm->qdma.dma);
err_alloc_qdma:
err_destroy_idr:
	idr_destroy(&qm->qp_idr);
	kfree(qm->factor);
	kfree(qm->factor);


	return ret;
	return ret;