]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
crypto: inside-secure - update the context and request later
authorAntoine Ténart <antoine.tenart@free-electrons.com>
Thu, 15 Jun 2017 07:56:23 +0000 (09:56 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 20 Jun 2017 03:21:44 +0000 (11:21 +0800)
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>
drivers/crypto/inside-secure/safexcel_cipher.c
drivers/crypto/inside-secure/safexcel_hash.c

index 8eea4d30db31feae00e6c77425da83196a8f0f9e..6037cdfc1f169e71fd2ad89979a2071e7903bc33 100644 (file)
@@ -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;
index 6eee1a502225864ec65bbe552b538cabf217b349..4e526372464fde454c30cef7b6ad6ab9515a7d31 100644 (file)
@@ -198,9 +198,6 @@ static int safexcel_ahash_send(struct crypto_async_request *async, int ring,
                len -= extra;
        }
 
-       request->req = &areq->base;
-       ctx->base.handle_result = safexcel_handle_result;
-
        spin_lock_bh(&priv->ring[ring].egress_lock);
 
        /* Add a command descriptor for the cached data, if any */
@@ -291,9 +288,12 @@ static int safexcel_ahash_send(struct crypto_async_request *async, int ring,
                goto cdesc_rollback;
        }
 
-       req->processed += len;
        spin_unlock_bh(&priv->ring[ring].egress_lock);
 
+       req->processed += len;
+       request->req = &areq->base;
+       ctx->base.handle_result = safexcel_handle_result;
+
        *commands = n_cdesc;
        *results = 1;
        return 0;