summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesper Juhl <juhl-lkml@dif.dk>2005-07-06 13:54:31 -0700
committerDavid S. Miller <davem@davemloft.net>2005-07-06 13:54:31 -0700
commit5129a9856d9dde77ccba6f3a17854a73dea5bff9 (patch)
treef7899e2969957ddc5847c9fff8d7ef3026c022f7
parent88912b4fe0b6fd9b9fa82e573bf32c40aab562a3 (diff)
downloadlinux-crypto-5129a9856d9dde77ccba6f3a17854a73dea5bff9.tar.gz
linux-crypto-5129a9856d9dde77ccba6f3a17854a73dea5bff9.zip
[CRYPTO] Add null short circuit to crypto_free_tfm
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>
-rw-r--r--crypto/api.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/crypto/api.c b/crypto/api.c
index 2d8d828c..b4728811 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);