/* This function frees up the transform and any associated resources, then drops the refcount on the associated algorithm.  */
void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm)
/* This function frees up the transform and any associated resources, then drops the refcount on the associated algorithm.  */
void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm)
{
	struct crypto_alg *alg;
	if (unlikely(!mem))
		return;
	alg = tfm->__crt_alg;
	if (!tfm->exit && alg->cra_exit)
		alg->cra_exit(tfm);
	crypto_exit_ops(tfm);
	crypto_mod_put(alg);
	kzfree(mem);
}