From owner-cvs-src-old@FreeBSD.ORG Mon Jul 13 11:59:48 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B0B3E106566C for ; Mon, 13 Jul 2009 11:59:48 +0000 (UTC) (envelope-from lstewart@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9DCA68FC14 for ; Mon, 13 Jul 2009 11:59:48 +0000 (UTC) (envelope-from lstewart@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6DBxmg1079499 for ; Mon, 13 Jul 2009 11:59:48 GMT (envelope-from lstewart@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6DBxm3B079498 for cvs-src-old@freebsd.org; Mon, 13 Jul 2009 11:59:48 GMT (envelope-from lstewart@repoman.freebsd.org) Message-Id: <200907131159.n6DBxm3B079498@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to lstewart@repoman.freebsd.org using -f From: Lawrence Stewart Date: Mon, 13 Jul 2009 11:59:38 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/netinet tcp_sack.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jul 2009 11:59:48 -0000 lstewart 2009-07-13 11:59:38 UTC FreeBSD src repository Modified files: sys/netinet tcp_sack.c Log: SVN rev 195655 on 2009-07-13 11:59:38Z by lstewart Fix a race in the manipulation of the V_tcp_sack_globalholes global variable, which is currently not protected by any type of lock. When triggered, the bug would sometimes cause a panic when the TCP activity to an affected machine eventually slowed during a lull. The panic only occurs if INVARIANTS is compiled into the kernel, and has laid dormant for some time as a result of INVARIANTS being off by default except in FreeBSD-CURRENT. Switch to atomic operations in the locations where the variable is changed. Reads have not been updated to be protected by atomics, so there is a possibility of accounting errors in any given calculation where the variable is read. This is considered unlikely to occur in the wild, and will not cause serious harm on rare occasions where it does. Thanks to Robert Watson for debugging help. Reported by: Kamigishi Rei Tested by: Kamigishi Rei Reviewed by: silby Approved by: re (rwatson), kensmith (mentor temporarily unavailable) Revision Changes Path 1.50 +2 -2 src/sys/netinet/tcp_sack.c