summaryrefslogtreecommitdiff
path: root/drivers/crypto/inside-secure/safexcel_cipher.c
diff options
context:
space:
mode:
authorAntoine Ténart <antoine.tenart@free-electrons.com>2017-06-15 10:56:23 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2017-06-20 06:21:44 +0300
commit9785843424c803cbe9515c477a6b89181914ea09 (patch)
treeb25f3e3b4a7b275342e77a9f7b874acdb4ccd9ac /drivers/crypto/inside-secure/safexcel_cipher.c
parent152bdf4cdb9c20e1858bc1b754c7bfb984a6ea14 (diff)
downloadlinux-9785843424c803cbe9515c477a6b89181914ea09.tar.xz
crypto: inside-secure - update the context and request later
This move the context and request updates at the end of the cipher and hash send() functions. This way the context and request fields are set only when everything else was successful in the send() functions. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/inside-secure/safexcel_cipher.c')
-rw-r--r--drivers/crypto/inside-secure/safexcel_cipher.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c
index 8eea4d30db31..6037cdfc1f16 100644
--- a/drivers/crypto/inside-secure/safexcel_cipher.c
+++ b/drivers/crypto/inside-secure/safexcel_cipher.c
@@ -190,8 +190,6 @@ static int safexcel_aes_send(struct crypto_async_request *async,
int nr_src, nr_dst, n_cdesc = 0, n_rdesc = 0, queued = req->cryptlen;
int i, ret = 0;
- request->req = &req->base;
-
if (req->src == req->dst) {
nr_src = dma_map_sg(priv->dev, req->src,
sg_nents_for_len(req->src, req->cryptlen),
@@ -264,10 +262,11 @@ static int safexcel_aes_send(struct crypto_async_request *async,
n_rdesc++;
}
- ctx->base.handle_result = safexcel_handle_result;
-
spin_unlock_bh(&priv->ring[ring].egress_lock);
+ request->req = &req->base;
+ ctx->base.handle_result = safexcel_handle_result;
+
*commands = n_cdesc;
*results = n_rdesc;
return 0;