aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/apm821xx/patches-4.14/022-0004-crypto-crypto4xx-avoid-VLA-use.patch
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@gmail.com>2018-04-28 22:08:09 +0200
committerJohn Crispin <john@phrozen.org>2018-05-18 09:14:09 +0200
commit16e39624b728264bd4759580f6292bffefcae466 (patch)
tree1023cbd038a9f71d8b9be71b3ac6411e714313d2 /target/linux/apm821xx/patches-4.14/022-0004-crypto-crypto4xx-avoid-VLA-use.patch
parente6e51ce87fac2d6b9d082336f8d767f12154d79b (diff)
downloadupstream-16e39624b728264bd4759580f6292bffefcae466.tar.gz
upstream-16e39624b728264bd4759580f6292bffefcae466.tar.bz2
upstream-16e39624b728264bd4759580f6292bffefcae466.zip
apm821xx: backport and reassign crypto4xx patches
This patch backports several patches that went upstream into Herbert Xu's cryptodev-2.6 tree: crypto: Use zeroing memory allocator instead of allocator/memset crypto: crypto4xx - performance optimizations crypto: crypto4xx - convert to skcipher crypto: crypto4xx - avoid VLA use crypto: crypto4xx - add aes-ctr support crypto: crypto4xx - properly set IV after de- and encrypt crypto: crypto4xx - extend aead fallback checks crypto: crypto4xx - put temporary dst sg into request ctx The older, outstanding patches from 120-wxyz series have been upstreamed as well and therefore they have been reassigned to fit into the series. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Diffstat (limited to 'target/linux/apm821xx/patches-4.14/022-0004-crypto-crypto4xx-avoid-VLA-use.patch')
-rw-r--r--target/linux/apm821xx/patches-4.14/022-0004-crypto-crypto4xx-avoid-VLA-use.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/target/linux/apm821xx/patches-4.14/022-0004-crypto-crypto4xx-avoid-VLA-use.patch b/target/linux/apm821xx/patches-4.14/022-0004-crypto-crypto4xx-avoid-VLA-use.patch
new file mode 100644
index 0000000000..a3e1b8c7df
--- /dev/null
+++ b/target/linux/apm821xx/patches-4.14/022-0004-crypto-crypto4xx-avoid-VLA-use.patch
@@ -0,0 +1,61 @@
+From c4e90650ff0cbf123ec9cfc32026fa0fb2931658 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@gmail.com>
+Date: Thu, 19 Apr 2018 18:41:53 +0200
+Subject: [PATCH 4/8] crypto: crypto4xx - avoid VLA use
+
+This patch fixes some of the -Wvla warnings.
+
+crypto4xx_alg.c:83:19: warning: Variable length array is used.
+crypto4xx_alg.c:273:56: warning: Variable length array is used.
+crypto4xx_alg.c:380:32: warning: Variable length array is used.
+
+Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+---
+ drivers/crypto/amcc/crypto4xx_alg.c | 14 ++++----------
+ 1 file changed, 4 insertions(+), 10 deletions(-)
+
+--- a/drivers/crypto/amcc/crypto4xx_alg.c
++++ b/drivers/crypto/amcc/crypto4xx_alg.c
+@@ -80,7 +80,7 @@ static inline int crypto4xx_crypt(struct
+ {
+ struct crypto_skcipher *cipher = crypto_skcipher_reqtfm(req);
+ struct crypto4xx_ctx *ctx = crypto_skcipher_ctx(cipher);
+- __le32 iv[ivlen];
++ __le32 iv[AES_IV_SIZE];
+
+ if (ivlen)
+ crypto4xx_memcpy_to_le32(iv, req->iv, ivlen);
+@@ -270,13 +270,7 @@ static inline bool crypto4xx_aead_need_f
+ static int crypto4xx_aead_fallback(struct aead_request *req,
+ struct crypto4xx_ctx *ctx, bool do_decrypt)
+ {
+- char aead_req_data[sizeof(struct aead_request) +
+- crypto_aead_reqsize(ctx->sw_cipher.aead)]
+- __aligned(__alignof__(struct aead_request));
+-
+- struct aead_request *subreq = (void *) aead_req_data;
+-
+- memset(subreq, 0, sizeof(aead_req_data));
++ struct aead_request *subreq = aead_request_ctx(req);
+
+ aead_request_set_tfm(subreq, ctx->sw_cipher.aead);
+ aead_request_set_callback(subreq, req->base.flags,
+@@ -377,7 +371,7 @@ static int crypto4xx_crypt_aes_ccm(struc
+ struct crypto_aead *aead = crypto_aead_reqtfm(req);
+ unsigned int len = req->cryptlen;
+ __le32 iv[16];
+- u32 tmp_sa[ctx->sa_len * 4];
++ u32 tmp_sa[SA_AES128_CCM_LEN + 4];
+ struct dynamic_sa_ctl *sa = (struct dynamic_sa_ctl *)tmp_sa;
+
+ if (crypto4xx_aead_need_fallback(req, true, decrypt))
+@@ -386,7 +380,7 @@ static int crypto4xx_crypt_aes_ccm(struc
+ if (decrypt)
+ len -= crypto_aead_authsize(aead);
+
+- memcpy(tmp_sa, decrypt ? ctx->sa_in : ctx->sa_out, sizeof(tmp_sa));
++ memcpy(tmp_sa, decrypt ? ctx->sa_in : ctx->sa_out, ctx->sa_len * 4);
+ sa->sa_command_0.bf.digest_len = crypto_aead_authsize(aead) >> 2;
+
+ if (req->iv[0] == 1) {