aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/api.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/crypto/api.c b/crypto/api.c
index 2d8d828c0ca2..b4728811ce3b 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -13,6 +13,8 @@
13 * any later version. 13 * any later version.
14 * 14 *
15 */ 15 */
16
17#include <linux/compiler.h>
16#include <linux/init.h> 18#include <linux/init.h>
17#include <linux/crypto.h> 19#include <linux/crypto.h>
18#include <linux/errno.h> 20#include <linux/errno.h>
@@ -189,8 +191,14 @@ out:
189 191
190void crypto_free_tfm(struct crypto_tfm *tfm) 192void crypto_free_tfm(struct crypto_tfm *tfm)
191{ 193{
192 struct crypto_alg *alg = tfm->__crt_alg; 194 struct crypto_alg *alg;
193 int size = sizeof(*tfm) + alg->cra_ctxsize; 195 int size;
196
197 if (unlikely(!tfm))
198 return;
199
200 alg = tfm->__crt_alg;
201 size = sizeof(*tfm) + alg->cra_ctxsize;
194 202
195 crypto_exit_ops(tfm); 203 crypto_exit_ops(tfm);
196 crypto_alg_put(alg); 204 crypto_alg_put(alg);