ipcomp: Avoid duplicate calls to ipcomp_destroy

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Tuesday, February 16, 2010 - 6:59 pm

Gitweb:     http://git.kernel.org/linus/10e7454ed7a2da39f1f6255f63d7df27ab4bb67f
Commit:     10e7454ed7a2da39f1f6255f63d7df27ab4bb67f
Parent:     1cab819b5e244e1b853c7b440981e6a960da3bfb
Author:     Herbert Xu <herbert@gondor.apana.org.au>
AuthorDate: Mon Feb 15 19:24:30 2010 +0000
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Tue Feb 16 14:53:24 2010 -0800

    ipcomp: Avoid duplicate calls to ipcomp_destroy
    
    When ipcomp_tunnel_attach fails we will call ipcomp_destroy twice.
    This may lead to double-frees on certain structures.
    
    As there is no reason to explicitly call ipcomp_destroy, this patch
    removes it from ipcomp*.c and lets the standard xfrm_state destruction
    take place.
    
    This is based on the discovery and patch by Alexey Dobriyan.
    
    Tested-by: Alexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 net/ipv4/ipcomp.c  |    6 +-----
 net/ipv6/ipcomp6.c |    6 +-----
 2 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c
index 38fbf04..544ce08 100644
--- a/net/ipv4/ipcomp.c
+++ b/net/ipv4/ipcomp.c
@@ -124,16 +124,12 @@ static int ipcomp4_init_state(struct xfrm_state *x)
 	if (x->props.mode == XFRM_MODE_TUNNEL) {
 		err = ipcomp_tunnel_attach(x);
 		if (err)
-			goto error_tunnel;
+			goto out;
 	}
 
 	err = 0;
 out:
 	return err;
-
-error_tunnel:
-	ipcomp_destroy(x);
-	goto out;
 }
 
 static const struct xfrm_type ipcomp_type = {
diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c
index 2f2a5ca..002e6ee 100644
--- a/net/ipv6/ipcomp6.c
+++ b/net/ipv6/ipcomp6.c
@@ -154,16 +154,12 @@ static int ipcomp6_init_state(struct xfrm_state *x)
 	if (x->props.mode == XFRM_MODE_TUNNEL) {
 		err = ipcomp6_tunnel_attach(x);
 		if (err)
-			goto error_tunnel;
+			goto out;
 	}
 
 	err = 0;
 out:
 	return err;
-error_tunnel:
-	ipcomp_destroy(x);
-
-	goto out;
 }
 
 static const struct xfrm_type ipcomp6_type =
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
ipcomp: Avoid duplicate calls to ipcomp_destroy, Linux Kernel Mailing ..., (Tue Feb 16, 6:59 pm)