Skip to contentSkip to conversation

crypto_free_tfm callers do not need to check for NULL

PATCH In review Jesper Juhl 4 participants 5 messages Aug 30, 2005 – Aug 31, 2005

Subsystems (8)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 crypto_free_tfm callers do not 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 posted similar patches in the past, but was asked to first until the short-circuit patch moved from -mm to mainline - and since it is now firmly there in 2.6.13 I assume there's no problem there anymore. I was also asked previously to make the patch against mainline and not -mm, so this patch is against 2.6.13.

Feedback, ACK, NACK, etc welcome.
Sorry about the large Cc list, but I wanted to include everyone involved with the code I change.
Please keep me on Cc.

---

 ./drivers/net/wireless/airo.c           |    3 +--
 ./fs/nfsd/nfs4recover.c                 |    3 +--
 ./net/ipv4/ah4.c                        |   18 ++++++------------
 ./net/ipv4/esp4.c                       |   24 ++++++++----------------
 ./net/ipv4/ipcomp.c                     |    3 +--
 ./net/ipv6/addrconf.c                   |    6 ++----
 ./net/ipv6/ah6.c                        |   18 ++++++------------
 ./net/ipv6/esp6.c                       |   24 ++++++++----------------
 ./net/ipv6/ipcomp6.c                    |    3 +--
 ./net/sctp/socket.c                     |    3 +--
 ./net/sunrpc/auth_gss/gss_krb5_crypto.c |    3 +--
 ./net/sunrpc/auth_gss/gss_krb5_mech.c   |    9 +++------
 ./net/sunrpc/auth_gss/gss_spkm3_mech.c  |   12 ++++--------
 13 files changed, 43 insertions(+), 86 deletions(-)
./drivers/net/wireless/airo.c +1 -2
@@ -2403,8 +2403,7 @@ void stop_airo_card( struct net_device *
 		}
         }
 #ifdef MICSUPPORT
-	if (ai->tfm)
-		crypto_free_tfm(ai->tfm);
+	crypto_free_tfm(ai->tfm);
 #endif
 	del_airo_dev( dev );
 	free_netdev( dev );
./fs/nfsd/nfs4recover.c +1 -2
@@ -114,8 +114,7 @@ nfs4_make_rec_clidname(char *dname, stru
 	kfree(cksum.data);
 	status = nfs_ok;
 out:
-	if (tfm)
-		crypto_free_tfm(tfm);
+	crypto_free_tfm(tfm);
 	return status;
 }
 
./net/ipv4/ah4.c +6 -12
@@ -263,10 +263,8 @@ static int ah_init_state(struct xfrm_sta
 
 error:
 	if (ahp) {
-		if (ahp->work_icv)
-			kfree(ahp->work_icv);
-		if (ahp->tfm)
-			crypto_free_tfm(ahp->tfm);
+		kfree(ahp->work_icv);
+		crypto_free_tfm(ahp->tfm);
 		kfree(ahp);
 	}
 	return -EINVAL;
@@ -279,14 +277,10 @@ static void ah_destroy(struct xfrm_state
 	if (!ahp)
 		return;
 
-	if (ahp->work_icv) {
-		kfree(ahp->work_icv);
-		ahp->work_icv = NULL;
-	}
-	if (ahp->tfm) {
-		crypto_free_tfm(ahp->tfm);
-		ahp->tfm = NULL;
-	}
+	kfree(ahp->work_icv);
+	ahp->work_icv = NULL;
+	crypto_free_tfm(ahp->tfm);
+	ahp->tfm = NULL;
 	kfree(ahp);
 }
 
./net/ipv4/esp4.c +8 -16
@@ -343,22 +343,14 @@ static void esp_destroy(struct xfrm_stat
 	if (!esp)
 		return;
 
-	if (esp->conf.tfm) {
-		crypto_free_tfm(esp->conf.tfm);
-		esp->conf.tfm = NULL;
-	}
-	if (esp->conf.ivec) {
-		kfree(esp->conf.ivec);
-		esp->conf.ivec = 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;
-	}
+	crypto_free_tfm(esp->conf.tfm);
+	esp->conf.tfm = NULL;
+	kfree(esp->conf.ivec);
+	esp->conf.ivec = NULL;
+	crypto_free_tfm(esp->auth.tfm);
+	esp->auth.tfm = NULL;
+	kfree(esp->auth.work_icv);
+	esp->auth.work_icv = NULL;
 	kfree(esp);
 }
 
./net/ipv4/ipcomp.c +1 -2
@@ -345,8 +345,7 @@ static void ipcomp_free_tfms(struct cryp
 
 	for_each_cpu(cpu) {
 		struct crypto_tfm *tfm = *per_cpu_ptr(tfms, cpu);
-		if (tfm)
-			crypto_free_tfm(tfm);
+		crypto_free_tfm(tfm);
 	}
 	free_percpu(tfms);
 }
./net/ipv6/addrconf.c +2 -4
@@ -3593,10 +3593,8 @@ void __exit addrconf_cleanup(void)
 	rtnl_unlock();
 
 #ifdef CONFIG_IPV6_PRIVACY
-	if (likely(md5_tfm != NULL)) {
-		crypto_free_tfm(md5_tfm);
-		md5_tfm = NULL;
-	}
+	crypto_free_tfm(md5_tfm);
+	md5_tfm = NULL;
 #endif
 
 #ifdef CONFIG_PROC_FS
./net/ipv6/ah6.c +6 -12
@@ -402,10 +402,8 @@ static int ah6_init_state(struct xfrm_st
 
 error:
 	if (ahp) {
-		if (ahp->work_icv)
-			kfree(ahp->work_icv);
-		if (ahp->tfm)
-			crypto_free_tfm(ahp->tfm);
+		kfree(ahp->work_icv);
+		crypto_free_tfm(ahp->tfm);
 		kfree(ahp);
 	}
 	return -EINVAL;
@@ -418,14 +416,10 @@ static void ah6_destroy(struct xfrm_stat
 	if (!ahp)
 		return;
 
-	if (ahp->work_icv) {
-		kfree(ahp->work_icv);
-		ahp->work_icv = NULL;
-	}
-	if (ahp->tfm) {
-		crypto_free_tfm(ahp->tfm);
-		ahp->tfm = NULL;
-	}
+	kfree(ahp->work_icv);
+	ahp->work_icv = NULL;
+	crypto_free_tfm(ahp->tfm);
+	ahp->tfm = NULL;
 	kfree(ahp);
 }
 
./net/ipv6/esp6.c +8 -16
@@ -277,22 +277,14 @@ static void esp6_destroy(struct xfrm_sta
 	if (!esp)
 		return;
 
-	if (esp->conf.tfm) {
-		crypto_free_tfm(esp->conf.tfm);
-		esp->conf.tfm = NULL;
-	}
-	if (esp->conf.ivec) {
-		kfree(esp->conf.ivec);
-		esp->conf.ivec = 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;
-	}
+	crypto_free_tfm(esp->conf.tfm);
+	esp->conf.tfm = NULL;
+	kfree(esp->conf.ivec);
+	esp->conf.ivec = NULL;
+	crypto_free_tfm(esp->auth.tfm);
+	esp->auth.tfm = NULL;
+	kfree(esp->auth.work_icv);
+	esp->auth.work_icv = NULL;
 	kfree(esp);
 }
 
./net/ipv6/ipcomp6.c +1 -2
@@ -341,8 +341,7 @@ static void ipcomp6_free_tfms(struct cry
 
 	for_each_cpu(cpu) {
 		struct crypto_tfm *tfm = *per_cpu_ptr(tfms, cpu);
-		if (tfm)
-			crypto_free_tfm(tfm);
+		crypto_free_tfm(tfm);
 	}
 	free_percpu(tfms);
 }
./net/sctp/socket.c +1 -2
@@ -4194,8 +4194,7 @@ out:
 	sctp_release_sock(sk);
 	return err;
 cleanup:
-	if (tfm)
-		sctp_crypto_free_tfm(tfm);
+	sctp_crypto_free_tfm(tfm);
 	goto out;
 }
 
./net/sunrpc/auth_gss/gss_krb5_crypto.c +1 -2
@@ -199,8 +199,7 @@ make_checksum(s32 cksumtype, char *heade
 	crypto_digest_final(tfm, cksum->data);
 	code = 0;
 out:
-	if (tfm)
-		crypto_free_tfm(tfm);
+	crypto_free_tfm(tfm);
 	return code;
 }
 
./net/sunrpc/auth_gss/gss_krb5_mech.c +3 -6
@@ -185,12 +185,9 @@ static void
 gss_delete_sec_context_kerberos(void *internal_ctx) {
 	struct krb5_ctx *kctx = internal_ctx;
 
-	if (kctx->seq)
-		crypto_free_tfm(kctx->seq);
-	if (kctx->enc)
-		crypto_free_tfm(kctx->enc);
-	if (kctx->mech_used.data)
-		kfree(kctx->mech_used.data);
+	crypto_free_tfm(kctx->seq);
+	crypto_free_tfm(kctx->enc);
+	kfree(kctx->mech_used.data);
 	kfree(kctx);
 }
 
./net/sunrpc/auth_gss/gss_spkm3_mech.c +4 -8
@@ -214,14 +214,10 @@ static void
 gss_delete_sec_context_spkm3(void *internal_ctx) {
 	struct spkm3_ctx *sctx = internal_ctx;
 
-	if(sctx->derived_integ_key)
-		crypto_free_tfm(sctx->derived_integ_key);
-	if(sctx->derived_conf_key)
-		crypto_free_tfm(sctx->derived_conf_key);
-	if(sctx->share_key.data)
-		kfree(sctx->share_key.data);
-	if(sctx->mech_used.data)
-		kfree(sctx->mech_used.data);
+	crypto_free_tfm(sctx->derived_integ_key);
+	crypto_free_tfm(sctx->derived_conf_key);
+	kfree(sctx->share_key.data);
+	kfree(sctx->mech_used.data);
 	kfree(sctx);
 }
 
#1 lore raw
Quoted 2 lines · Jesper Juhl

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.

...

Quoted 1 line

Feedback, ACK, NACK, etc welcome.

I've no problem with the auth_gss or nfsv4 bits.--b.

#2 lore raw
In reply to Jesper Juhl
Quoted 6 lines · Jesper Juhl

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.

Quoted 7 lines

I've posted similar patches in the past, but was asked to first until the short-circuit patch moved from -mm to mainline - and since it is now firmly there in 2.6.13 I assume there's no problem there anymore. I was also asked previously to make the patch against mainline and not -mm, so this patch is against 2.6.13.

Feedback, ACK, NACK, etc welcome.

sctp change looks fine.
A similar check in sctp_endpoint_destroy() can also be removed.

Thanks
Sridhar

#3 lore raw
Quoted 13 lines · Sridhar Samudrala
Quoted 12 lines · Jesper Juhl

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 posted similar patches in the past, but was asked to first until the short-circuit patch moved from -mm to mainline - and since it is now firmly there in 2.6.13 I assume there's no problem there anymore. I was also asked previously to make the patch against mainline and not -mm, so this patch is against 2.6.13.

Quoted 5 lines
Quoted 1 line

Feedback, ACK, NACK, etc welcome.

sctp change looks fine.
A similar check in sctp_endpoint_destroy() can also be removed.

Thanks, I'll remember that and either update the patch or send a small incremental one later.

Signature · 3 lines
Jesper Juhl <[email protected]>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html
maintainer
#4 lore raw
In reply to Jesper Juhl
Quoted 6 lines · Jesper Juhl

I've posted similar patches in the past, but was asked to first until the short-circuit patch moved from -mm to mainline - and since it is now firmly there in 2.6.13 I assume there's no problem there anymore. I was also asked previously to make the patch against mainline and not -mm, so this patch is against 2.6.13.

Thanks for you work and patience Jesper, this patch looks good to me.

Signature · 4 lines
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt