return;
inst->alg.cra_flags |= CRYPTO_ALG_DEAD;
+ if (hlist_unhashed(&inst->list))
+ return;
+
if (!tmpl || !crypto_tmpl_get(tmpl))
return;
if (crypto_is_larval(q)) {
struct crypto_larval *larval = (void *)q;
+ /*
+ * Check to see if either our generic name or
+ * specific name can satisfy the name requested
+ * by the larval entry q.
+ */
if (strcmp(alg->cra_name, q->cra_name) &&
strcmp(alg->cra_driver_name, q->cra_name))
continue;
LIST_HEAD(list);
int err = -EINVAL;
- if (inst->alg.cra_destroy)
- goto err;
-
err = crypto_check_alg(&inst->alg);
if (err)
goto err;