From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <yliu@fridaylinux.org>
Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com
 [66.111.4.27]) by dpdk.org (Postfix) with ESMTP id A21614D3A
 for <stable@dpdk.org>; Thu,  1 Feb 2018 10:49:51 +0100 (CET)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41])
 by mailout.nyi.internal (Postfix) with ESMTP id 5CC6220CD5;
 Thu,  1 Feb 2018 04:49:51 -0500 (EST)
Received: from frontend2 ([10.202.2.161])
 by compute1.internal (MEProxy); Thu, 01 Feb 2018 04:49:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fridaylinux.org;
 h=cc:date:from:in-reply-to:message-id:references:subject:to
 :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=KZjruPJjyXp+NnM7V
 fnF4vszgiYt2ybM+bx+nO+RNRE=; b=Zg5sJ+JEtGgV+yBqlcTvONQzFn71rPJWh
 PLx6xLGVKZ0gAsNj8KZmLyRe3ixAoN08nqHlzKMooxI6F1a9cixYsGEmutL6gz7W
 0Ezg1nxrCxMBkv8CX3MAi6Kyjv/tin1WK7RnXKcb/yxMl7MbZiP/rkVPa3Rr3zIc
 0HVdMAjDg20SKIucaOw05RE2ltj/YVp5kHkYdD9i5+q0l2iClxP/WvhC2uZcbV8V
 laNXfIsqqayEEmoxGbdH8OH16zZJ1oV1d/0EKK5sCZNslMfOUP16JhzTCeGmM7+W
 Mh2WH9dP0WQFd4T6bNAcMFgXTUDU6wr1ZNnzSYl01aPGWBir0z0jA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:date:from:in-reply-to:message-id
 :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=
 fm1; bh=KZjruPJjyXp+NnM7VfnF4vszgiYt2ybM+bx+nO+RNRE=; b=cfYinFgF
 VUJO5vilCxSVbuCxEHi+GCPh3hY4swxec0H8LUZqHoontFMbWe4XR408Ic1zLQcZ
 MJZROtsqbBAWLTwQss+vpamx0JAHpOZgwogCnbZMCoR0D0u6PzF2otAuZokS0PBS
 e2OpJE7hY8erLaVPgWnjH5Urw04ZTwmuuSuo32QzTEr85dDcu8T3MsPR0EDlFNrW
 P2R06Kz3d6H7SI5FkKRsEMB529hlJXZ2sidLcQUFwVCKdpWmYm+gAc4nynl2TQL+
 5u9S9zrk9DXDPsW0xhe50erh+e4vM7Uo/xxo9Gdv763ZTo3bk9EQ/TykFKOYgMvA
 15dQ7q9Hm0bF3w==
X-ME-Sender: <xms:v-JyWseYSU9LGQtd2cLYFhY-Yw5RjvjBww5CPJL8g3etkZWJtbwmVQ>
Received: from yliu-mob.mtl.com (unknown [115.150.27.200])
 by mail.messagingengine.com (Postfix) with ESMTPA id A66C424610;
 Thu,  1 Feb 2018 04:49:49 -0500 (EST)
From: Yuanhan Liu <yliu@fridaylinux.org>
To: Yong Wang <wang.yong19@zte.com.cn>
Cc: Fiona Trahe <fiona.trahe@intel.com>, Ferruh Yigit <ferruh.yigit@intel.com>,
 dpdk stable <stable@dpdk.org>
Date: Thu,  1 Feb 2018 17:47:58 +0800
Message-Id: <1517478479-12417-44-git-send-email-yliu@fridaylinux.org>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1517478479-12417-1-git-send-email-yliu@fridaylinux.org>
References: <1517478479-12417-1-git-send-email-yliu@fridaylinux.org>
Subject: [dpdk-stable] patch 'crypto/qat: fix allocation check and leak' has
	been queued to LTS release 17.11.1
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches for DPDK stable branches <stable.dpdk.org>
List-Unsubscribe: <https://dpdk.org/ml/options/stable>,
 <mailto:stable-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/stable/>
List-Post: <mailto:stable@dpdk.org>
List-Help: <mailto:stable-request@dpdk.org?subject=help>
List-Subscribe: <https://dpdk.org/ml/listinfo/stable>,
 <mailto:stable-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 01 Feb 2018 09:49:51 -0000

Hi,

FYI, your patch has been queued to LTS release 17.11.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/03/18. So please
shout if anyone has objections.

Thanks.

	--yliu

---
>>From 2221b1a54e80b114c2dc2618ce1ea2aec213c6d4 Mon Sep 17 00:00:00 2001
From: Yong Wang <wang.yong19@zte.com.cn>
Date: Thu, 25 Jan 2018 01:53:04 -0500
Subject: [PATCH] crypto/qat: fix allocation check and leak

[ upstream commit 963898f0e316611df9dc2964d059b4e16835b95a ]

There are several func calls to rte_zmalloc() which don't do null
point check on the return value. And before return, the memory is not
freed. Fix it by adding null point check and rte_free().

Fixes: 1703e94ac5ce ("qat: add driver for QuickAssist devices")
Fixes: e09231eaa2af ("crypto/qat: add SGL capability")

Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/crypto/qat/qat_adf/qat_algs_build_desc.c | 10 ++++++++++
 drivers/crypto/qat/qat_qp.c                      | 10 +++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/qat/qat_adf/qat_algs_build_desc.c b/drivers/crypto/qat/qat_adf/qat_algs_build_desc.c
index db6c9a3..26f854c 100644
--- a/drivers/crypto/qat/qat_adf/qat_algs_build_desc.c
+++ b/drivers/crypto/qat/qat_adf/qat_algs_build_desc.c
@@ -359,6 +359,11 @@ static int qat_alg_do_precomputes(enum icp_qat_hw_auth_algo hash_alg,
 
 		in = rte_zmalloc("working mem for key",
 				ICP_QAT_HW_AES_XCBC_MAC_STATE2_SZ, 16);
+		if (in == NULL) {
+			PMD_DRV_LOG(ERR, "Failed to alloc memory");
+			return -ENOMEM;
+		}
+
 		rte_memcpy(in, qat_aes_xcbc_key_seed,
 				ICP_QAT_HW_AES_XCBC_MAC_STATE2_SZ);
 		for (x = 0; x < HASH_XCBC_PRECOMP_KEY_NUM; x++) {
@@ -389,6 +394,11 @@ static int qat_alg_do_precomputes(enum icp_qat_hw_auth_algo hash_alg,
 				ICP_QAT_HW_GALOIS_E_CTR0_SZ);
 		in = rte_zmalloc("working mem for key",
 				ICP_QAT_HW_GALOIS_H_SZ, 16);
+		if (in == NULL) {
+			PMD_DRV_LOG(ERR, "Failed to alloc memory");
+			return -ENOMEM;
+		}
+
 		memset(in, 0, ICP_QAT_HW_GALOIS_H_SZ);
 		if (AES_set_encrypt_key(auth_key, auth_keylen << 3,
 			&enc_key) != 0) {
diff --git a/drivers/crypto/qat/qat_qp.c b/drivers/crypto/qat/qat_qp.c
index ced3aa6..c02971e 100644
--- a/drivers/crypto/qat/qat_qp.c
+++ b/drivers/crypto/qat/qat_qp.c
@@ -180,6 +180,11 @@ int qat_crypto_sym_qp_setup(struct rte_cryptodev *dev, uint16_t queue_pair_id,
 	qp->op_cookies = rte_zmalloc("qat PMD op cookie pointer",
 			qp_conf->nb_descriptors * sizeof(*qp->op_cookies),
 			RTE_CACHE_LINE_SIZE);
+	if (qp->op_cookies == NULL) {
+		PMD_DRV_LOG(ERR, "Failed to alloc mem for cookie");
+		rte_free(qp);
+		return -ENOMEM;
+	}
 
 	qp->mmap_bar_addr = pci_dev->mem_resource[0].addr;
 	qp->inflights16 = 0;
@@ -221,7 +226,7 @@ int qat_crypto_sym_qp_setup(struct rte_cryptodev *dev, uint16_t queue_pair_id,
 	for (i = 0; i < qp->nb_descriptors; i++) {
 		if (rte_mempool_get(qp->op_cookie_pool, &qp->op_cookies[i])) {
 			PMD_DRV_LOG(ERR, "QAT PMD Cannot get op_cookie");
-			return -EFAULT;
+			goto create_err;
 		}
 
 		struct qat_crypto_op_cookie *sql_cookie =
@@ -246,6 +251,9 @@ int qat_crypto_sym_qp_setup(struct rte_cryptodev *dev, uint16_t queue_pair_id,
 	return 0;
 
 create_err:
+	if (qp->op_cookie_pool)
+		rte_mempool_free(qp->op_cookie_pool);
+	rte_free(qp->op_cookies);
 	rte_free(qp);
 	return -EFAULT;
 }
-- 
2.7.4