提交 97858434 编写于 作者: A Antoine Ténart 提交者: Herbert Xu

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: NAntoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
上级 152bdf4c
......@@ -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;
......
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册