Message ID | 1320787405.26025.10.camel@edumazet-laptop |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 08 Nov 2011 22:23:25 +0100 > OK, it seems we let a timer running while we free the socket (same error > path than your previous bug report, because of the NULL route) > > We arm this keepalive timer in tcp_create_openreq_child() > > net/ipv4/tcp_minisocks.c:513 > if (sock_flag(newsk, SOCK_KEEPOPEN)) > inet_csk_reset_keepalive_timer(newsk, > keepalive_time_when(newtp)); > > I would try to add a call to tcp_clear_xmit_timers() as well > > Please try following patch : We've been waiting quite some time to get some testing validation on this patch, but I think it's correct. Eric can you formally submit this? Thanks! -- 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
On Mon, Nov 14, 2011 at 03:36:08PM -0500, David Miller wrote: > From: Eric Dumazet <eric.dumazet@gmail.com> > Date: Tue, 08 Nov 2011 22:23:25 +0100 > > > OK, it seems we let a timer running while we free the socket (same error > > path than your previous bug report, because of the NULL route) > > > > We arm this keepalive timer in tcp_create_openreq_child() > > > > net/ipv4/tcp_minisocks.c:513 > > if (sock_flag(newsk, SOCK_KEEPOPEN)) > > inet_csk_reset_keepalive_timer(newsk, > > keepalive_time_when(newtp)); > > > > I would try to add a call to tcp_clear_xmit_timers() as well > > > > Please try following patch : > > We've been waiting quite some time to get some testing validation on > this patch, but I think it's correct. > > Eric can you formally submit this? Thanks! Sorry, I'm still testing slowly, with the "crash into the new kernel" method. :) I'll reboot the rest shortly, but so far no recurrences on boxes running with this fix, and no other problems noted with it applied. Simon- -- 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..a9db4b1 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -1510,6 +1510,7 @@ exit: NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); return NULL; put_and_exit: + tcp_clear_xmit_timers(newsk); bh_unlock_sock(newsk); sock_put(newsk); goto exit;