summaryrefslogtreecommitdiffstats
path: root/drivers/crypto/ccree/cc_aead.c
diff options
context:
space:
mode:
authorGilad Ben-Yossef <gilad@benyossef.com>2019-04-18 16:38:46 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2019-04-25 15:38:14 +0800
commita108f9311c01271bccad45d321cf9ddfac852c4b (patch)
tree61f1684502035612cc7e8e52bf3acb5bdcf2c933 /drivers/crypto/ccree/cc_aead.c
parentdcf6285d18ea147b3366de14121825be82a243f2 (diff)
downloadlinux-a108f9311c01271bccad45d321cf9ddfac852c4b.tar.bz2
crypto: ccree - fix backlog notifications
We were doing backlog notification callbacks via a cipher/hash/aead request structure cast to the base structure, which may or may not work based on how the structure is laid in memory and is not safe. Fix it by delegating the backlog notification to the appropriate internal callbacks which are type aware. Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> Cc: stable@vger.kernel.org # v4.19+ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/ccree/cc_aead.c')
-rw-r--r--drivers/crypto/ccree/cc_aead.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/crypto/ccree/cc_aead.c b/drivers/crypto/ccree/cc_aead.c
index c5cde327cf1f..1fa3c7fef851 100644
--- a/drivers/crypto/ccree/cc_aead.c
+++ b/drivers/crypto/ccree/cc_aead.c
@@ -220,6 +220,10 @@ static void cc_aead_complete(struct device *dev, void *cc_req, int err)
struct crypto_aead *tfm = crypto_aead_reqtfm(cc_req);
struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
+ /* BACKLOG notification */
+ if (err == -EINPROGRESS)
+ goto done;
+
cc_unmap_aead_request(dev, areq);
/* Restore ordinary iv pointer */