diff options
author | Gilad Ben-Yossef <gilad@benyossef.com> | 2017-10-18 08:00:38 +0100 |
---|---|---|
committer | Mircea Pop <mircea.pop@nxp.com> | 2019-05-14 09:54:34 +0200 |
commit | 73d2e52ac3cc69063fc3ee5660f858ffbf3a6e05 (patch) | |
tree | 80204f82a0daa647bf549cdcd95bf10d6e623e01 /crypto | |
parent | 76b9d1aa87a754ac35a88767709a6ac71e3c3c4c (diff) |
crypto: introduce crypto wait for async op
Invoking a possibly async. crypto op and waiting for completion
while correctly handling backlog processing is a common task
in the crypto API implementation and outside users of it.
This patch adds a generic implementation for doing so in
preparation for using it across the board instead of hand
rolled versions.
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
CC: Eric Biggers <ebiggers3@gmail.com>
CC: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
(cherry picked from commit ada69a1639eca54ff74d839a6513c43db8d57d70)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/api.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crypto/api.c b/crypto/api.c index e485aed11ad0..ff7a7852bb17 100644 --- a/crypto/api.c +++ b/crypto/api.c @@ -24,6 +24,7 @@ #include <linux/sched/signal.h> #include <linux/slab.h> #include <linux/string.h> +#include <linux/completion.h> #include "internal.h" LIST_HEAD(crypto_alg_list); @@ -595,5 +596,17 @@ int crypto_has_alg(const char *name, u32 type, u32 mask) } EXPORT_SYMBOL_GPL(crypto_has_alg); +void crypto_req_done(struct crypto_async_request *req, int err) +{ + struct crypto_wait *wait = req->data; + + if (err == -EINPROGRESS) + return; + + wait->err = err; + complete(&wait->completion); +} +EXPORT_SYMBOL_GPL(crypto_req_done); + MODULE_DESCRIPTION("Cryptographic core API"); MODULE_LICENSE("GPL"); |