All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
To: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	David Howells <dhowells@redhat.com>,
	Eric Biggers <ebiggers@google.com>,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	James Morris <jmorris@namei.org>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	Stephan Mueller <smueller@chronox.de>,
	Marcelo Henrique Cerri <marcelo.cerri@canonical.com>,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Brendan Higgins <brendanhiggins@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Waiman Long <longman@redhat.com>,
	Mimi Zohar <zohar@linux.ibm.com>,
	Lakshmi Ramasubramanian <nramas@linux.microsoft.com>,
	Colin Ian King <colin.king@canonical.com>,
	Tushar Sugandhi <tusharsu@linux.microsoft.com>,
	Vitaly Chikunov <vt@altlinux.org>,
	"Gilad Ben-Yossef" <gilad@benyossef.com>,
	Pascal van Leeuwen <pvanleeuwen@rambus.com>,
	linux-crypto@vger.kernel.org, keyrings@vger.kernel.org,
	linux-integrity@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Cc: Xufeng Zhang <yunbo.xufeng@linux.alibaba.com>,
	Jia Zhang <zhang.jia@linux.alibaba.com>,
	Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Subject: [PATCH v7 06/10] crypto: testmgr - Fix potential memory leak in test_akcipher_one()
Date: Mon, 21 Sep 2020 00:20:59 +0800	[thread overview]
Message-ID: <20200920162103.83197-7-tianjia.zhang@linux.alibaba.com> (raw)
In-Reply-To: <20200920162103.83197-1-tianjia.zhang@linux.alibaba.com>

When the 'key' allocation fails, the 'req' will not be released,
which will cause memory leakage on this path. This patch adds a
'free_req' tag used to solve this problem, and two new err values
are added to reflect the real reason of the error.

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
---
 crypto/testmgr.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index cd002a030af5..ed8e29efe280 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -3954,7 +3954,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	key = kmalloc(vecs->key_len + sizeof(u32) * 2 + vecs->param_len,
 		      GFP_KERNEL);
 	if (!key)
-		goto free_xbuf;
+		goto free_req;
 	memcpy(key, vecs->key, vecs->key_len);
 	ptr = key + vecs->key_len;
 	ptr = test_pack_u32(ptr, vecs->algo);
@@ -3966,7 +3966,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	else
 		err = crypto_akcipher_set_priv_key(tfm, key, vecs->key_len);
 	if (err)
-		goto free_req;
+		goto free_key;
 
 	/*
 	 * First run test which do not require a private key, such as
@@ -3976,7 +3976,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	out_len_max = crypto_akcipher_maxsize(tfm);
 	outbuf_enc = kzalloc(out_len_max, GFP_KERNEL);
 	if (!outbuf_enc)
-		goto free_req;
+		goto free_key;
 
 	if (!vecs->siggen_sigver_test) {
 		m = vecs->m;
@@ -3995,6 +3995,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 		op = "verify";
 	}
 
+	err = -E2BIG;
 	if (WARN_ON(m_size > PAGE_SIZE))
 		goto free_all;
 	memcpy(xbuf[0], m, m_size);
@@ -4061,6 +4062,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 		c_size = req->dst_len;
 	}
 
+	err = -E2BIG;
 	op = vecs->siggen_sigver_test ? "sign" : "decrypt";
 	if (WARN_ON(c_size > PAGE_SIZE))
 		goto free_all;
@@ -4097,9 +4099,10 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 free_all:
 	kfree(outbuf_dec);
 	kfree(outbuf_enc);
+free_key:
+	kfree(key);
 free_req:
 	akcipher_request_free(req);
-	kfree(key);
 free_xbuf:
 	testmgr_free_buf(xbuf);
 	return err;
-- 
2.19.1.3.ge56e4f7


WARNING: multiple messages have this Message-ID (diff)
From: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
To: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	David Howells <dhowells@redhat.com>,
	Eric Biggers <ebiggers@google.com>,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	James Morris <jmorris@namei.org>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	Stephan Mueller <smueller@chronox.de>,
	Marcelo Henrique Cerri <marcelo.cerri@canonical.com>,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Brendan Higgins <brendanhiggins@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Waiman Long <longman@redhat.com>,
	Mimi Zohar <zohar@linux.ibm.com>,
	Lakshmi Ramasubramanian <nramas@linux.microsoft.com>,
	Colin Ian King <colin.king@canonical.com>,
	Tushar Sugandhi <tusharsu@linux.microsoft.com>,
	Vitaly Chikunov <vt@altlinux.org>,
	Gilad Ben-Yossef <gilad@benyossef.com>,
	Pascal van Leeuwen <pvanleeuwen@rambus.com>,
	linux-crypto@vger.kernel.org, keyrings@vger.kernel.org,
	linux-integrity@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Cc: Xufeng Zhang <yunbo.xufeng@linux.alibaba.com>,
	Tianjia Zhang <tianjia.zhang@linux.alibaba.com>,
	Jia Zhang <zhang.jia@linux.alibaba.com>
Subject: [PATCH v7 06/10] crypto: testmgr - Fix potential memory leak in test_akcipher_one()
Date: Sun, 20 Sep 2020 16:20:59 +0000	[thread overview]
Message-ID: <20200920162103.83197-7-tianjia.zhang@linux.alibaba.com> (raw)
In-Reply-To: <20200920162103.83197-1-tianjia.zhang@linux.alibaba.com>

When the 'key' allocation fails, the 'req' will not be released,
which will cause memory leakage on this path. This patch adds a
'free_req' tag used to solve this problem, and two new err values
are added to reflect the real reason of the error.

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
---
 crypto/testmgr.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index cd002a030af5..ed8e29efe280 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -3954,7 +3954,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	key = kmalloc(vecs->key_len + sizeof(u32) * 2 + vecs->param_len,
 		      GFP_KERNEL);
 	if (!key)
-		goto free_xbuf;
+		goto free_req;
 	memcpy(key, vecs->key, vecs->key_len);
 	ptr = key + vecs->key_len;
 	ptr = test_pack_u32(ptr, vecs->algo);
@@ -3966,7 +3966,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	else
 		err = crypto_akcipher_set_priv_key(tfm, key, vecs->key_len);
 	if (err)
-		goto free_req;
+		goto free_key;
 
 	/*
 	 * First run test which do not require a private key, such as
@@ -3976,7 +3976,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	out_len_max = crypto_akcipher_maxsize(tfm);
 	outbuf_enc = kzalloc(out_len_max, GFP_KERNEL);
 	if (!outbuf_enc)
-		goto free_req;
+		goto free_key;
 
 	if (!vecs->siggen_sigver_test) {
 		m = vecs->m;
@@ -3995,6 +3995,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 		op = "verify";
 	}
 
+	err = -E2BIG;
 	if (WARN_ON(m_size > PAGE_SIZE))
 		goto free_all;
 	memcpy(xbuf[0], m, m_size);
@@ -4061,6 +4062,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 		c_size = req->dst_len;
 	}
 
+	err = -E2BIG;
 	op = vecs->siggen_sigver_test ? "sign" : "decrypt";
 	if (WARN_ON(c_size > PAGE_SIZE))
 		goto free_all;
@@ -4097,9 +4099,10 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 free_all:
 	kfree(outbuf_dec);
 	kfree(outbuf_enc);
+free_key:
+	kfree(key);
 free_req:
 	akcipher_request_free(req);
-	kfree(key);
 free_xbuf:
 	testmgr_free_buf(xbuf);
 	return err;
-- 
2.19.1.3.ge56e4f7

WARNING: multiple messages have this Message-ID (diff)
From: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
To: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	David Howells <dhowells@redhat.com>,
	Eric Biggers <ebiggers@google.com>,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	James Morris <jmorris@namei.org>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	Stephan Mueller <smueller@chronox.de>,
	Marcelo Henrique Cerri <marcelo.cerri@canonical.com>,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Brendan Higgins <brendanhiggins@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Waiman Long <longman@redhat.com>,
	Mimi Zohar <zohar@linux.ibm.com>,
	Lakshmi Ramasubramanian <nramas@linux.microsoft.com>,
	Colin Ian King <colin.king@canonical.com>,
	Tushar Sugandhi <tusharsu@linux.microsoft.com>,
	Vitaly Chikunov <vt@altlinux.org>,
	"Gilad Ben-Yossef" <gilad@benyossef.com>,
	Pascal van Leeuwen <pvanleeuwen@rambus.com>,
	linux-crypto@vger.kernel.org, keyrings@vger.kernel.org,
	linux-integrity@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Cc: Xufeng Zhang <yunbo.xufeng@linux.alibaba.com>,
	Tianjia Zhang <tianjia.zhang@linux.alibaba.com>,
	Jia Zhang <zhang.jia@linux.alibaba.com>
Subject: [PATCH v7 06/10] crypto: testmgr - Fix potential memory leak in test_akcipher_one()
Date: Mon, 21 Sep 2020 00:20:59 +0800	[thread overview]
Message-ID: <20200920162103.83197-7-tianjia.zhang@linux.alibaba.com> (raw)
In-Reply-To: <20200920162103.83197-1-tianjia.zhang@linux.alibaba.com>

When the 'key' allocation fails, the 'req' will not be released,
which will cause memory leakage on this path. This patch adds a
'free_req' tag used to solve this problem, and two new err values
are added to reflect the real reason of the error.

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
---
 crypto/testmgr.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index cd002a030af5..ed8e29efe280 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -3954,7 +3954,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	key = kmalloc(vecs->key_len + sizeof(u32) * 2 + vecs->param_len,
 		      GFP_KERNEL);
 	if (!key)
-		goto free_xbuf;
+		goto free_req;
 	memcpy(key, vecs->key, vecs->key_len);
 	ptr = key + vecs->key_len;
 	ptr = test_pack_u32(ptr, vecs->algo);
@@ -3966,7 +3966,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	else
 		err = crypto_akcipher_set_priv_key(tfm, key, vecs->key_len);
 	if (err)
-		goto free_req;
+		goto free_key;
 
 	/*
 	 * First run test which do not require a private key, such as
@@ -3976,7 +3976,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 	out_len_max = crypto_akcipher_maxsize(tfm);
 	outbuf_enc = kzalloc(out_len_max, GFP_KERNEL);
 	if (!outbuf_enc)
-		goto free_req;
+		goto free_key;
 
 	if (!vecs->siggen_sigver_test) {
 		m = vecs->m;
@@ -3995,6 +3995,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 		op = "verify";
 	}
 
+	err = -E2BIG;
 	if (WARN_ON(m_size > PAGE_SIZE))
 		goto free_all;
 	memcpy(xbuf[0], m, m_size);
@@ -4061,6 +4062,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 		c_size = req->dst_len;
 	}
 
+	err = -E2BIG;
 	op = vecs->siggen_sigver_test ? "sign" : "decrypt";
 	if (WARN_ON(c_size > PAGE_SIZE))
 		goto free_all;
@@ -4097,9 +4099,10 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
 free_all:
 	kfree(outbuf_dec);
 	kfree(outbuf_enc);
+free_key:
+	kfree(key);
 free_req:
 	akcipher_request_free(req);
-	kfree(key);
 free_xbuf:
 	testmgr_free_buf(xbuf);
 	return err;
-- 
2.19.1.3.ge56e4f7


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-09-20 16:22 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-20 16:20 [PATCH v7 00/10] crpyto: introduce OSCCA certificate and SM2 asymmetric algorithm Tianjia Zhang
2020-09-20 16:20 ` Tianjia Zhang
2020-09-20 16:20 ` Tianjia Zhang
2020-09-20 16:20 ` [PATCH v7 01/10] crypto: sm3 - export crypto_sm3_final function Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20 ` [PATCH v7 02/10] lib/mpi: Extend the MPI library Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-25  8:19   ` [PATCH] lib/mpi: Fix unused variable warnings Herbert Xu
2020-09-25  8:19     ` Herbert Xu
2020-09-25  8:19     ` Herbert Xu
2020-09-25  9:59     ` Tianjia Zhang
2020-09-25  9:59       ` Tianjia Zhang
2020-09-25  9:59       ` Tianjia Zhang
2020-09-25 14:01     ` Tianjia Zhang
2020-09-25 14:01       ` Tianjia Zhang
2020-09-25 14:01       ` Tianjia Zhang
2020-09-20 16:20 ` [PATCH v7 03/10] lib/mpi: Introduce ec implementation to MPI library Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20 ` [PATCH v7 04/10] crypto: sm2 - introduce OSCCA SM2 asymmetric cipher algorithm Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20 ` [PATCH v7 05/10] crypto: testmgr - support test with different ciphertext per encryption Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:20 ` Tianjia Zhang [this message]
2020-09-20 16:20   ` [PATCH v7 06/10] crypto: testmgr - Fix potential memory leak in test_akcipher_one() Tianjia Zhang
2020-09-20 16:20   ` Tianjia Zhang
2020-09-20 16:21 ` [PATCH v7 07/10] crypto: sm2 - add SM2 test vectors to testmgr Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-20 16:21 ` [PATCH v7 08/10] X.509: support OSCCA certificate parse Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-20 16:21 ` [PATCH v7 09/10] X.509: support OSCCA SM2-with-SM3 certificate verification Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-20 16:21 ` [PATCH v7 10/10] integrity: Asymmetric digsig supports SM2-with-SM3 algorithm Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-20 16:21   ` Tianjia Zhang
2020-09-25  8:17 ` [PATCH v7 00/10] crpyto: introduce OSCCA certificate and SM2 asymmetric algorithm Herbert Xu
2020-09-25  8:17   ` Herbert Xu
2020-09-25  8:17   ` Herbert Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200920162103.83197-7-tianjia.zhang@linux.alibaba.com \
    --to=tianjia.zhang@linux.alibaba.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexandre.torgue@st.com \
    --cc=brendanhiggins@google.com \
    --cc=colin.king@canonical.com \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=ebiggers@google.com \
    --cc=gilad@benyossef.com \
    --cc=hannes@cmpxchg.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=jarkko.sakkinen@linux.intel.com \
    --cc=jmorris@namei.org \
    --cc=keyrings@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=longman@redhat.com \
    --cc=marcelo.cerri@canonical.com \
    --cc=masahiroy@kernel.org \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=nramas@linux.microsoft.com \
    --cc=pvanleeuwen@rambus.com \
    --cc=rostedt@goodmis.org \
    --cc=serge@hallyn.com \
    --cc=smueller@chronox.de \
    --cc=tusharsu@linux.microsoft.com \
    --cc=vt@altlinux.org \
    --cc=yunbo.xufeng@linux.alibaba.com \
    --cc=zhang.jia@linux.alibaba.com \
    --cc=zohar@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.