]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blobdiff - queue-5.1/crypto-ccp-memset-structure-fields-to-zero-before-reuse.patch
Linux 5.1.20
[thirdparty/kernel/stable-queue.git] / queue-5.1 / crypto-ccp-memset-structure-fields-to-zero-before-reuse.patch
diff --git a/queue-5.1/crypto-ccp-memset-structure-fields-to-zero-before-reuse.patch b/queue-5.1/crypto-ccp-memset-structure-fields-to-zero-before-reuse.patch
deleted file mode 100644 (file)
index 38dde35..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-From 20e833dc36355ed642d00067641a679c618303fa Mon Sep 17 00:00:00 2001
-From: "Hook, Gary" <Gary.Hook@amd.com>
-Date: Wed, 10 Jul 2019 00:09:22 +0000
-Subject: crypto: ccp - memset structure fields to zero before reuse
-
-From: Hook, Gary <Gary.Hook@amd.com>
-
-commit 20e833dc36355ed642d00067641a679c618303fa upstream.
-
-The AES GCM function reuses an 'op' data structure, which members
-contain values that must be cleared for each (re)use.
-
-This fix resolves a crypto self-test failure:
-alg: aead: gcm-aes-ccp encryption test failed (wrong result) on test vector 2, cfg="two even aligned splits"
-
-Fixes: 36cf515b9bbe ("crypto: ccp - Enable support for AES GCM on v5 CCPs")
-Cc: <stable@vger.kernel.org>
-Signed-off-by: Gary R Hook <gary.hook@amd.com>
-Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/crypto/ccp/ccp-ops.c |   12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
---- a/drivers/crypto/ccp/ccp-ops.c
-+++ b/drivers/crypto/ccp/ccp-ops.c
-@@ -625,6 +625,7 @@ static int ccp_run_aes_gcm_cmd(struct cc
-       unsigned long long *final;
-       unsigned int dm_offset;
-+      unsigned int jobid;
-       unsigned int ilen;
-       bool in_place = true; /* Default value */
-       int ret;
-@@ -663,9 +664,11 @@ static int ccp_run_aes_gcm_cmd(struct cc
-               p_tag = scatterwalk_ffwd(sg_tag, p_inp, ilen);
-       }
-+      jobid = CCP_NEW_JOBID(cmd_q->ccp);
-+
-       memset(&op, 0, sizeof(op));
-       op.cmd_q = cmd_q;
--      op.jobid = CCP_NEW_JOBID(cmd_q->ccp);
-+      op.jobid = jobid;
-       op.sb_key = cmd_q->sb_key; /* Pre-allocated */
-       op.sb_ctx = cmd_q->sb_ctx; /* Pre-allocated */
-       op.init = 1;
-@@ -816,6 +819,13 @@ static int ccp_run_aes_gcm_cmd(struct cc
-       final[0] = cpu_to_be64(aes->aad_len * 8);
-       final[1] = cpu_to_be64(ilen * 8);
-+      memset(&op, 0, sizeof(op));
-+      op.cmd_q = cmd_q;
-+      op.jobid = jobid;
-+      op.sb_key = cmd_q->sb_key; /* Pre-allocated */
-+      op.sb_ctx = cmd_q->sb_ctx; /* Pre-allocated */
-+      op.init = 1;
-+      op.u.aes.type = aes->type;
-       op.u.aes.mode = CCP_AES_MODE_GHASH;
-       op.u.aes.action = CCP_AES_GHASHFINAL;
-       op.src.type = CCP_MEMTYPE_SYSTEM;