#include <crypto/internal/aead.h>
#include <linux/completion.h>
#include <linux/kthread.h>
#include <linux/module.h>
#include <linux/notifier.h>
#include <linux/rtnetlink.h>
#include <linux/sched/signal.h>
#include <linux/string.h>
struct rtattr *tb[CRYPTO_MAX_ATTRS + 2];
struct crypto_attr_type data;
struct crypto_attr_alg data;
struct crypto_attr_u32 data;
} attrs[CRYPTO_MAX_ATTRS];
char template[CRYPTO_MAX_ALG_NAME];
struct crypto_larval *larval;
struct crypto_test_param {
char driver[CRYPTO_MAX_ALG_NAME];
char alg[CRYPTO_MAX_ALG_NAME];
static int cryptomgr_probe(void *data)
struct cryptomgr_param *param = data;
struct crypto_template *tmpl;
struct crypto_instance *inst;
tmpl = crypto_lookup_template(param->template);
err = tmpl->create(tmpl, param->tb);
inst = tmpl->alloc(param->tb);
else if ((err = crypto_register_instance(tmpl, inst)))
} while (err == -EAGAIN && !signal_pending(current));
complete_all(¶m->larval->completion);
crypto_alg_put(¶m->larval->alg);