summaryrefslogtreecommitdiff
path: root/crypto/api.c
diff options
context:
space:
mode:
authorGilad Ben-Yossef <gilad@benyossef.com>2017-10-18 08:00:38 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2017-11-03 22:11:18 +0800
commita8bb8510fd6d89a0718fb2a3e9aa5e07baaaa8f2 (patch)
tree01c96b21fbb9fcb724a7e1005b0e41166dd72118 /crypto/api.c
parent66677bc72a24151f1f0384748a20f0e718d036a2 (diff)
downloadlinux-crypto-a8bb8510fd6d89a0718fb2a3e9aa5e07baaaa8f2.tar.gz
linux-crypto-a8bb8510fd6d89a0718fb2a3e9aa5e07baaaa8f2.zip
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>
Diffstat (limited to 'crypto/api.c')
-rw-r--r--crypto/api.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/crypto/api.c b/crypto/api.c
index 941cd4c6..2a2479d1 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");