Commit 573dbd95 authored by Jesper Juhl's avatar Jesper Juhl Committed by David S. Miller

[CRYPTO]: crypto_free_tfm() callers no longer need to check for NULL

Since the patch to add a NULL short-circuit to crypto_free_tfm() went in,
there's no longer any need for callers of that function to check for NULL.
This patch removes the redundant NULL checks and also a few similar checks
for NULL before calls to kfree() that I ran into while doing the
crypto_free_tfm bits.

I've succesfuly compile tested this patch, and a kernel with the patch 
applied boots and runs just fine.

When I posted the patch to LKML (and other lists/people on Cc) it drew the
following comments :

 J. Bruce Fields commented
  "I've no problem with the auth_gss or nfsv4 bits.--b."

 Sridhar Samudrala said
  "sctp change looks fine."

 Herbert Xu signed off on the patch.

So, I guess this is ready to be dropped into -mm and eventually mainline.
Signed-off-by: default avatarJesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5170dbeb
...@@ -2403,8 +2403,7 @@ void stop_airo_card( struct net_device *dev, int freeres ) ...@@ -2403,8 +2403,7 @@ void stop_airo_card( struct net_device *dev, int freeres )
} }
} }
#ifdef MICSUPPORT #ifdef MICSUPPORT
if (ai->tfm) crypto_free_tfm(ai->tfm);
crypto_free_tfm(ai->tfm);
#endif #endif
del_airo_dev( dev ); del_airo_dev( dev );
free_netdev( dev ); free_netdev( dev );
......
...@@ -114,8 +114,7 @@ nfs4_make_rec_clidname(char *dname, struct xdr_netobj *clname) ...@@ -114,8 +114,7 @@ nfs4_make_rec_clidname(char *dname, struct xdr_netobj *clname)
kfree(cksum.data); kfree(cksum.data);
status = nfs_ok; status = nfs_ok;
out: out:
if (tfm) crypto_free_tfm(tfm);
crypto_free_tfm(tfm);
return status; return status;
} }
......
...@@ -263,10 +263,8 @@ static int ah_init_state(struct xfrm_state *x) ...@@ -263,10 +263,8 @@ static int ah_init_state(struct xfrm_state *x)
error: error:
if (ahp) { if (ahp) {
if (ahp->work_icv) kfree(ahp->work_icv);
kfree(ahp->work_icv); crypto_free_tfm(ahp->tfm);
if (ahp->tfm)
crypto_free_tfm(ahp->tfm);
kfree(ahp); kfree(ahp);
} }
return -EINVAL; return -EINVAL;
...@@ -279,14 +277,10 @@ static void ah_destroy(struct xfrm_state *x) ...@@ -279,14 +277,10 @@ static void ah_destroy(struct xfrm_state *x)
if (!ahp) if (!ahp)
return; return;
if (ahp->work_icv) { kfree(ahp->work_icv);
kfree(ahp->work_icv); ahp->work_icv = NULL;
ahp->work_icv = NULL; crypto_free_tfm(ahp->tfm);
} ahp->tfm = NULL;
if (ahp->tfm) {
crypto_free_tfm(ahp->tfm);
ahp->tfm = NULL;
}
kfree(ahp); kfree(ahp);
} }
......
...@@ -343,22 +343,14 @@ static void esp_destroy(struct xfrm_state *x) ...@@ -343,22 +343,14 @@ static void esp_destroy(struct xfrm_state *x)
if (!esp) if (!esp)
return; return;
if (esp->conf.tfm) { crypto_free_tfm(esp->conf.tfm);
crypto_free_tfm(esp->conf.tfm); esp->conf.tfm = NULL;
esp->conf.tfm = NULL; kfree(esp->conf.ivec);
} esp->conf.ivec = NULL;
if (esp->conf.ivec) { crypto_free_tfm(esp->auth.tfm);
kfree(esp->conf.ivec); esp->auth.tfm = NULL;
esp->conf.ivec = NULL; kfree(esp->auth.work_icv);
} esp->auth.work_icv = NULL;
if (esp->auth.tfm) {
crypto_free_tfm(esp->auth.tfm);
esp->auth.tfm = NULL;
}
if (esp->auth.work_icv) {
kfree(esp->auth.work_icv);
esp->auth.work_icv = NULL;
}
kfree(esp); kfree(esp);
} }
......
...@@ -345,8 +345,7 @@ static void ipcomp_free_tfms(struct crypto_tfm **tfms) ...@@ -345,8 +345,7 @@ static void ipcomp_free_tfms(struct crypto_tfm **tfms)
for_each_cpu(cpu) { for_each_cpu(cpu) {
struct crypto_tfm *tfm = *per_cpu_ptr(tfms, cpu); struct crypto_tfm *tfm = *per_cpu_ptr(tfms, cpu);
if (tfm) crypto_free_tfm(tfm);
crypto_free_tfm(tfm);
} }
free_percpu(tfms); free_percpu(tfms);
} }
......
...@@ -3593,10 +3593,8 @@ void __exit addrconf_cleanup(void) ...@@ -3593,10 +3593,8 @@ void __exit addrconf_cleanup(void)
rtnl_unlock(); rtnl_unlock();
#ifdef CONFIG_IPV6_PRIVACY #ifdef CONFIG_IPV6_PRIVACY
if (likely(md5_tfm != NULL)) { crypto_free_tfm(md5_tfm);
crypto_free_tfm(md5_tfm); md5_tfm = NULL;
md5_tfm = NULL;
}
#endif #endif
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
...@@ -401,10 +401,8 @@ static int ah6_init_state(struct xfrm_state *x) ...@@ -401,10 +401,8 @@ static int ah6_init_state(struct xfrm_state *x)
error: error:
if (ahp) { if (ahp) {
if (ahp->work_icv) kfree(ahp->work_icv);
kfree(ahp->work_icv); crypto_free_tfm(ahp->tfm);
if (ahp->tfm)
crypto_free_tfm(ahp->tfm);
kfree(ahp); kfree(ahp);
} }
return -EINVAL; return -EINVAL;
...@@ -417,14 +415,10 @@ static void ah6_destroy(struct xfrm_state *x) ...@@ -417,14 +415,10 @@ static void ah6_destroy(struct xfrm_state *x)
if (!ahp) if (!ahp)
return; return;
if (ahp->work_icv) { kfree(ahp->work_icv);
kfree(ahp->work_icv); ahp->work_icv = NULL;
ahp->work_icv = NULL; crypto_free_tfm(ahp->tfm);
} ahp->tfm = NULL;
if (ahp->tfm) {
crypto_free_tfm(ahp->tfm);
ahp->tfm = NULL;
}
kfree(ahp); kfree(ahp);
} }
......
...@@ -276,22 +276,14 @@ static void esp6_destroy(struct xfrm_state *x) ...@@ -276,22 +276,14 @@ static void esp6_destroy(struct xfrm_state *x)
if (!esp) if (!esp)
return; return;
if (esp->conf.tfm) { crypto_free_tfm(esp->conf.tfm);
crypto_free_tfm(esp->conf.tfm); esp->conf.tfm = NULL;
esp->conf.tfm = NULL; kfree(esp->conf.ivec);
} esp->conf.ivec = NULL;
if (esp->conf.ivec) { crypto_free_tfm(esp->auth.tfm);
kfree(esp->conf.ivec); esp->auth.tfm = NULL;
esp->conf.ivec = NULL; kfree(esp->auth.work_icv);
} esp->auth.work_icv = NULL;
if (esp->auth.tfm) {
crypto_free_tfm(esp->auth.tfm);
esp->auth.tfm = NULL;
}
if (esp->auth.work_icv) {
kfree(esp->auth.work_icv);
esp->auth.work_icv = NULL;
}
kfree(esp); kfree(esp);
} }
......
...@@ -341,8 +341,7 @@ static void ipcomp6_free_tfms(struct crypto_tfm **tfms) ...@@ -341,8 +341,7 @@ static void ipcomp6_free_tfms(struct crypto_tfm **tfms)
for_each_cpu(cpu) { for_each_cpu(cpu) {
struct crypto_tfm *tfm = *per_cpu_ptr(tfms, cpu); struct crypto_tfm *tfm = *per_cpu_ptr(tfms, cpu);
if (tfm) crypto_free_tfm(tfm);
crypto_free_tfm(tfm);
} }
free_percpu(tfms); free_percpu(tfms);
} }
......
...@@ -193,8 +193,7 @@ static void sctp_endpoint_destroy(struct sctp_endpoint *ep) ...@@ -193,8 +193,7 @@ static void sctp_endpoint_destroy(struct sctp_endpoint *ep)
sctp_unhash_endpoint(ep); sctp_unhash_endpoint(ep);
/* Free up the HMAC transform. */ /* Free up the HMAC transform. */
if (sctp_sk(ep->base.sk)->hmac) sctp_crypto_free_tfm(sctp_sk(ep->base.sk)->hmac);
sctp_crypto_free_tfm(sctp_sk(ep->base.sk)->hmac);
/* Cleanup. */ /* Cleanup. */
sctp_inq_free(&ep->base.inqueue); sctp_inq_free(&ep->base.inqueue);
......
...@@ -4194,8 +4194,7 @@ out: ...@@ -4194,8 +4194,7 @@ out:
sctp_release_sock(sk); sctp_release_sock(sk);
return err; return err;
cleanup: cleanup:
if (tfm) sctp_crypto_free_tfm(tfm);
sctp_crypto_free_tfm(tfm);
goto out; goto out;
} }
......
...@@ -199,8 +199,7 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, ...@@ -199,8 +199,7 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
crypto_digest_final(tfm, cksum->data); crypto_digest_final(tfm, cksum->data);
code = 0; code = 0;
out: out:
if (tfm) crypto_free_tfm(tfm);
crypto_free_tfm(tfm);
return code; return code;
} }
......
...@@ -185,12 +185,9 @@ static void ...@@ -185,12 +185,9 @@ static void
gss_delete_sec_context_kerberos(void *internal_ctx) { gss_delete_sec_context_kerberos(void *internal_ctx) {
struct krb5_ctx *kctx = internal_ctx; struct krb5_ctx *kctx = internal_ctx;
if (kctx->seq) crypto_free_tfm(kctx->seq);
crypto_free_tfm(kctx->seq); crypto_free_tfm(kctx->enc);
if (kctx->enc) kfree(kctx->mech_used.data);
crypto_free_tfm(kctx->enc);
if (kctx->mech_used.data)
kfree(kctx->mech_used.data);
kfree(kctx); kfree(kctx);
} }
......
...@@ -214,14 +214,10 @@ static void ...@@ -214,14 +214,10 @@ static void
gss_delete_sec_context_spkm3(void *internal_ctx) { gss_delete_sec_context_spkm3(void *internal_ctx) {
struct spkm3_ctx *sctx = internal_ctx; struct spkm3_ctx *sctx = internal_ctx;
if(sctx->derived_integ_key) crypto_free_tfm(sctx->derived_integ_key);
crypto_free_tfm(sctx->derived_integ_key); crypto_free_tfm(sctx->derived_conf_key);
if(sctx->derived_conf_key) kfree(sctx->share_key.data);
crypto_free_tfm(sctx->derived_conf_key); kfree(sctx->mech_used.data);
if(sctx->share_key.data)
kfree(sctx->share_key.data);
if(sctx->mech_used.data)
kfree(sctx->mech_used.data);
kfree(sctx); kfree(sctx);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment