|
@@ -45,10 +45,9 @@ struct cryptomgr_param {
|
|
|
} nu32;
|
|
|
} attrs[CRYPTO_MAX_ATTRS];
|
|
|
|
|
|
- char larval[CRYPTO_MAX_ALG_NAME];
|
|
|
char template[CRYPTO_MAX_ALG_NAME];
|
|
|
|
|
|
- struct completion *completion;
|
|
|
+ struct crypto_larval *larval;
|
|
|
|
|
|
u32 otype;
|
|
|
u32 omask;
|
|
@@ -87,7 +86,8 @@ static int cryptomgr_probe(void *data)
|
|
|
crypto_tmpl_put(tmpl);
|
|
|
|
|
|
out:
|
|
|
- complete_all(param->completion);
|
|
|
+ complete_all(¶m->larval->completion);
|
|
|
+ crypto_alg_put(¶m->larval->alg);
|
|
|
kfree(param);
|
|
|
module_put_and_exit(0);
|
|
|
}
|
|
@@ -187,18 +187,19 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)
|
|
|
param->otype = larval->alg.cra_flags;
|
|
|
param->omask = larval->mask;
|
|
|
|
|
|
- memcpy(param->larval, larval->alg.cra_name, CRYPTO_MAX_ALG_NAME);
|
|
|
-
|
|
|
- param->completion = &larval->completion;
|
|
|
+ crypto_alg_get(&larval->alg);
|
|
|
+ param->larval = larval;
|
|
|
|
|
|
thread = kthread_run(cryptomgr_probe, param, "cryptomgr_probe");
|
|
|
if (IS_ERR(thread))
|
|
|
- goto err_free_param;
|
|
|
+ goto err_put_larval;
|
|
|
|
|
|
wait_for_completion_interruptible(&larval->completion);
|
|
|
|
|
|
return NOTIFY_STOP;
|
|
|
|
|
|
+err_put_larval:
|
|
|
+ crypto_alg_put(&larval->alg);
|
|
|
err_free_param:
|
|
|
kfree(param);
|
|
|
err_put_module:
|