Message ID | 1321518828-4288-1-git-send-email-roy.qing.li@gmail.com |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
From: roy.qing.li@gmail.com Date: Thu, 17 Nov 2011 16:33:48 +0800 > From: RongQing.Li <roy.qing.li@gmail.com> > > When tcp_connect failed in tcp_v4_connect, the dst will be > released in error handler of tcp_v4_connect, but dst has been > set to sk->sk_dst_cache which will be released again when > destroy this sk. > > Signed-off-by: RongQing.Li <roy.qing.li@gmail.com> We set 'rt' to NULL at these statements specifically to handle this situation, ip_rt_put(NULL) will do nothing. I don't think this change is necessary. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
2011/11/18 David Miller <davem@davemloft.net>: > We set 'rt' to NULL at these statements specifically to handle this > situation, ip_rt_put(NULL) will do nothing. > > I don't think this change is necessary. > Yes, I am wrong, thank you. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index a744315..adc2992 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -263,8 +263,10 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) err = tcp_connect(sk); rt = NULL; - if (err) + if (err) { + sk->sk_dst_cache = NULL; goto failure; + } return 0;