|
@@ -557,34 +557,34 @@ err:
|
|
|
return ERR_PTR(err);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(crypto_alloc_tfm);
|
|
|
-
|
|
|
+
|
|
|
/*
|
|
|
- * crypto_free_tfm - Free crypto transform
|
|
|
+ * crypto_destroy_tfm - Free crypto transform
|
|
|
+ * @mem: Start of tfm slab
|
|
|
* @tfm: Transform to free
|
|
|
*
|
|
|
- * crypto_free_tfm() frees up the transform and any associated resources,
|
|
|
+ * This function frees up the transform and any associated resources,
|
|
|
* then drops the refcount on the associated algorithm.
|
|
|
*/
|
|
|
-void crypto_free_tfm(struct crypto_tfm *tfm)
|
|
|
+void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm)
|
|
|
{
|
|
|
struct crypto_alg *alg;
|
|
|
int size;
|
|
|
|
|
|
- if (unlikely(!tfm))
|
|
|
+ if (unlikely(!mem))
|
|
|
return;
|
|
|
|
|
|
alg = tfm->__crt_alg;
|
|
|
- size = sizeof(*tfm) + alg->cra_ctxsize;
|
|
|
+ size = ksize(mem);
|
|
|
|
|
|
if (!tfm->exit && alg->cra_exit)
|
|
|
alg->cra_exit(tfm);
|
|
|
crypto_exit_ops(tfm);
|
|
|
crypto_mod_put(alg);
|
|
|
- memset(tfm, 0, size);
|
|
|
- kfree(tfm);
|
|
|
+ memset(mem, 0, size);
|
|
|
+ kfree(mem);
|
|
|
}
|
|
|
-
|
|
|
-EXPORT_SYMBOL_GPL(crypto_free_tfm);
|
|
|
+EXPORT_SYMBOL_GPL(crypto_destroy_tfm);
|
|
|
|
|
|
int crypto_has_alg(const char *name, u32 type, u32 mask)
|
|
|
{
|