Date: Wed, 10 Jun 2015 17:32:28 -0400 From: John Baldwin <jhb@FreeBSD.org> To: Julien Charbon <jch@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r284245 - head/sys/netinet Message-ID: <5578ACEC.2070209@FreeBSD.org> In-Reply-To: <201506102043.t5AKh8YB058825@svn.freebsd.org> References: <201506102043.t5AKh8YB058825@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 6/10/15 4:43 PM, Julien Charbon wrote: > Author: jch > Date: Wed Jun 10 20:43:07 2015 > New Revision: 284245 > URL: https://svnweb.freebsd.org/changeset/base/284245 > > Log: > Fix a callout race condition introduced in TCP timers callouts with r281599. > In TCP timer context, it is not enough to check callout_stop() return value > to decide if a callout is still running or not, previous callout_reset() > return values have also to be checked. > > Differential Revision: https://reviews.freebsd.org/D2763 > Reviewed by: hiren > Approved by: hiren > MFC after: 1 day > Sponsored by: Verisign, Inc. > > Modified: > head/sys/netinet/tcp_timer.c > head/sys/netinet/tcp_timer.h > > Modified: head/sys/netinet/tcp_timer.c > ============================================================================== > --- head/sys/netinet/tcp_timer.c Wed Jun 10 20:11:28 2015 (r284244) > +++ head/sys/netinet/tcp_timer.c Wed Jun 10 20:43:07 2015 (r284245) > @@ -347,11 +347,12 @@ tcp_timer_2msl(void *xtp) > tp = tcp_close(tp); > } else { > if (tp->t_state != TCPS_TIME_WAIT && > - ticks - tp->t_rcvtime <= TP_MAXIDLE(tp)) > - callout_reset_on(&tp->t_timers->tt_2msl, > - TP_KEEPINTVL(tp), tcp_timer_2msl, tp, > - inp_to_cpuid(inp)); > - else > + ticks - tp->t_rcvtime <= TP_MAXIDLE(tp)) { > + if (!callout_reset(&tp->t_timers->tt_2msl, > + TP_KEEPINTVL(tp), tcp_timer_2msl, tp)) { > + tp->t_timers->tt_flags &= ~TT_2MSL_RST; > + } > + } else > tp = tcp_close(tp); Did you mean to use callout_reset() instead of callout_reset_on() here and elsewhere in this change? -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5578ACEC.2070209>