From owner-svn-src-projects@FreeBSD.ORG Wed Feb 27 20:54:46 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 488A994; Wed, 27 Feb 2013 20:54:46 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 3A8C2EAA; Wed, 27 Feb 2013 20:54:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1RKskB2000871; Wed, 27 Feb 2013 20:54:46 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1RKsk3X000870; Wed, 27 Feb 2013 20:54:46 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201302272054.r1RKsk3X000870@svn.freebsd.org> From: Alexander Motin Date: Wed, 27 Feb 2013 20:54:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r247419 - projects/calloutng/sys/kern X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2013 20:54:46 -0000 Author: mav Date: Wed Feb 27 20:54:45 2013 New Revision: 247419 URL: http://svnweb.freebsd.org/changeset/base/247419 Log: Close the hypothetical race when new callout inserted into the callwheel bucket, that now executes its last callout in direct mode, and so dropped the lock, caching NULL as the next callout pointer. Modified: projects/calloutng/sys/kern/kern_timeout.c Modified: projects/calloutng/sys/kern/kern_timeout.c ============================================================================== --- projects/calloutng/sys/kern/kern_timeout.c Wed Feb 27 20:20:21 2013 (r247418) +++ projects/calloutng/sys/kern/kern_timeout.c Wed Feb 27 20:54:45 2013 (r247419) @@ -489,7 +489,6 @@ next: * Stop if we looked far enough into the future. */ } while (firstb <= lastb); - cc->cc_exec_next_dir = NULL; cc->cc_firstevent = last; #ifndef NO_EVENTTIMERS cpu_new_callout(curcpu, last, first); @@ -555,6 +554,8 @@ callout_cc_add(struct callout *c, struct c, (int)(c->c_precision >> 32), (u_int)(c->c_precision & 0xffffffff)); TAILQ_INSERT_TAIL(&cc->cc_callwheel[bucket], c, c_links.tqe); + if (cc->cc_exec_next_dir == NULL) + cc->cc_exec_next_dir = c; #ifndef NO_EVENTTIMERS /* * Inform the eventtimers(4) subsystem there's a new callout