diff options
-rw-r--r-- | crypto/api.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/crypto/api.c b/crypto/api.c index 2d8d828c0ca..b4728811ce3 100644 --- a/crypto/api.c +++ b/crypto/api.c @@ -13,6 +13,8 @@ * any later version. * */ + +#include <linux/compiler.h> #include <linux/init.h> #include <linux/crypto.h> #include <linux/errno.h> @@ -189,8 +191,14 @@ out: void crypto_free_tfm(struct crypto_tfm *tfm) { - struct crypto_alg *alg = tfm->__crt_alg; - int size = sizeof(*tfm) + alg->cra_ctxsize; + struct crypto_alg *alg; + int size; + + if (unlikely(!tfm)) + return; + + alg = tfm->__crt_alg; + size = sizeof(*tfm) + alg->cra_ctxsize; crypto_exit_ops(tfm); crypto_alg_put(alg); |