From owner-cvs-src-old@FreeBSD.ORG Wed Feb 25 15:04:36 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 8828010656F2 for ; Wed, 25 Feb 2009 15:04:36 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7045D8FC1B for ; Wed, 25 Feb 2009 15:04:36 +0000 (UTC) (envelope-from rwatson@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 n1PF4aTu082282 for ; Wed, 25 Feb 2009 15:04:36 GMT (envelope-from rwatson@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n1PF4aJZ082281 for cvs-src-old@freebsd.org; Wed, 25 Feb 2009 15:04:36 GMT (envelope-from rwatson@repoman.freebsd.org) Message-Id: <200902251504.n1PF4aJZ082281@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to rwatson@repoman.freebsd.org using -f From: Robert Watson Date: Wed, 25 Feb 2009 15:04:30 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: RELENG_7 Subject: cvs commit: src/sys/kern kern_descrip.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: Wed, 25 Feb 2009 15:04:40 -0000 rwatson 2009-02-25 15:04:30 UTC FreeBSD src repository Modified files: (Branch: RELENG_7) sys/kern kern_descrip.c Log: SVN rev 189044 on 2009-02-25 15:04:30Z by rwatson Merge r188485 from head to stable/7: Modify fdcopy() so that, during fork(2), it won't copy file descriptors from the parent to the child process if they have an operation vector of &badfileops. This narrows a set of races involving system calls that allocate a new file descriptor, potentially block for some extended period, and then return the file descriptor, when invoked by a threaded program that concurrently invokes fork(2). Similar approches are used in both Solaris and Linux, and the wideness of this race was introduced in FreeBSD when we moved to a more optimistic implementation of accept(2) in order to simplify locking. A small race necessarily remains because the fork(2) might occur after the finit() in accept(2) but before the system call has returned, but that appears unavoidable using current APIs. However, this race is vastly narrower. The fix can be validated using the newfileops_on_fork regression test. PR: kern/130348 Reported by: Ivan Shcheklein Reviewed by: jhb, kib Revision Changes Path 1.313.2.16 +2 -1 src/sys/kern/kern_descrip.c