From owner-svn-src-all@FreeBSD.ORG Thu Jun 11 14:22:28 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 62F08106564A; Thu, 11 Jun 2009 14:22:28 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 33A598FC12; Thu, 11 Jun 2009 14:22:28 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id DAF7E46B37; Thu, 11 Jun 2009 10:22:27 -0400 (EDT) Received: from jhbbsd.hudson-trading.com (unknown [209.249.190.8]) by bigwig.baldwin.cx (Postfix) with ESMTPA id A4EE88A071; Thu, 11 Jun 2009 10:22:26 -0400 (EDT) From: John Baldwin To: Bruce Evans Date: Thu, 11 Jun 2009 09:07:02 -0400 User-Agent: KMail/1.9.7 References: <200906101827.n5AIRFoR022115@svn.freebsd.org> <200906101442.20988.jhb@freebsd.org> <20090611135433.K21177@delplex.bde.org> In-Reply-To: <20090611135433.K21177@delplex.bde.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200906110907.02874.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Thu, 11 Jun 2009 10:22:26 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=4.2 tests=AWL,BAYES_00,RDNS_NONE autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r193941 - head/sys/netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Jun 2009 14:22:28 -0000 On Thursday 11 June 2009 12:04:32 am Bruce Evans wrote: > On Wed, 10 Jun 2009, John Baldwin wrote: > > > On Wednesday 10 June 2009 2:27:15 pm John Baldwin wrote: > >> Author: jhb > >> Date: Wed Jun 10 18:27:15 2009 > >> New Revision: 193941 > >> URL: http://svn.freebsd.org/changeset/base/193941 > >> > >> Log: > >> Change a few members of tcpcb that store cached copies of ticks to be ints > >> instead of unsigned longs. This fixes a few overflow edge cases on 64-bit > >> platforms. Specifically, if an idle connection receives a packet shortly > >> before 2^31 clock ticks of uptime (about 25 days with hz=1000) and the keep > >> alive timer fires after 2^31 clock ticks, the keep alive timer will think > >> that the connection has been idle for a very long time and will immediately > >> drop the connection instead of sending a keep alive probe. > >> > >> Reviewed by: silby, gnn, lstewart > >> MFC after: 1 week > > > > Note that the MFC patch for 7 is very different. I can't change the members > > to int in 7 since tcpcb is part of the ABI (for netstat, etc.). So, for 7 I > > added explicit casts in the math operations using t_rcvtime and ticks. > > That has a better chance of working too. I tested both patches by cranking the keep alive timers to 5 seconds and manually adjusting ticks to INT_MAX - 15000. Then I letting a TCP connection sit idle while ticks wrapped around to -ve. Without either patch the connection always died with ETIMEDOUT. With each patch (including what was committed above), the connection survived and the keepalive timer sent a probe instead of dropping the connection. Thus, both patches "work". -- John Baldwin