summaryrefslogtreecommitdiffstats
path: root/crypto/crypto_null.c
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2014-03-14 02:37:06 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2014-03-21 21:54:22 +0800
commitd4a7a0fbe959e12bdd071b79b50ed34853a6db8f (patch)
tree05da76d4006eb8395ee5ed442827468ec7c03e73 /crypto/crypto_null.c
parent1ffc9fbd1e5071948b6d48f9a27d845738ee890f (diff)
downloadop-kernel-dev-d4a7a0fbe959e12bdd071b79b50ed34853a6db8f.zip
op-kernel-dev-d4a7a0fbe959e12bdd071b79b50ed34853a6db8f.tar.gz
crypto: hash - Simplify the ahash_finup implementation
The ahash_def_finup() can make use of the request save/restore functions, thus make it so. This simplifies the code a little and unifies the code paths. Note that the same remark about free()ing the req->priv applies here, the req->priv can only be free()'d after the original request was restored. Finally, squash a bug in the invocation of completion in the ASYNC path. In both ahash_def_finup_done{1,2}, the function areq->base.complete(X, err); was called with X=areq->base.data . This is incorrect , as X=&areq->base is the correct value. By analysis of the data structures, we see the areq is of type 'struct ahash_request' , areq->base is of type 'struct crypto_async_request' and areq->base.completion is of type crypto_completion_t, which is defined in include/linux/crypto.h as: typedef void (*crypto_completion_t)(struct crypto_async_request *req, int err); This is one lead that the X should be &areq->base . Next up, we can inspect other code which calls the completion callback to give us kind-of statistical idea of how this callback is used. We can try: $ git grep base\.complete\( drivers/crypto/ Finally, by inspecting ahash_request_set_callback() implementation defined in include/crypto/hash.h , we observe that the .data entry of 'struct crypto_async_request' is intended for arbitrary data, not for completion argument. Signed-off-by: Marek Vasut <marex@denx.de> Cc: David S. Miller <davem@davemloft.net> Cc: Fabio Estevam <fabio.estevam@freescale.com> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: Shawn Guo <shawn.guo@linaro.org> Cc: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/crypto_null.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud