[CRYPTO] Add null short circuit to crypto_free_tfm
authorJesper Juhl <juhl-lkml@dif.dk>
Wed, 6 Jul 2005 20:54:31 +0000 (13:54 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Jul 2005 20:54:31 +0000 (13:54 -0700)
As far as I'm aware there's a general concensus that functions that are
responsible for freeing resources should be able to cope with being passed
a NULL pointer. This makes sense as it removes the need for all callers to
check for NULL, thus elliminating the bugs that happen when some forget
(safer to just check centrally in the freeing function) and it also makes
for smaller code all over due to the lack of all those NULL checks.
This patch makes it safe to pass the crypto_free_tfm() function a NULL
pointer. Once this patch is applied we can start removing the NULL checks
from the callers.

Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
crypto/api.c

index 2d8d828c0ca2c5147285a865ee67754d08ff5105..b4728811ce3b1570e7ee2806644692d099c32cdf 100644 (file)
@@ -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);