From owner-cvs-all@FreeBSD.ORG Sat Aug 19 15:42:36 2006 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3B3F716A4DF; Sat, 19 Aug 2006 15:42:36 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4AA6043D5A; Sat, 19 Aug 2006 15:42:35 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 6505E46C58; Sat, 19 Aug 2006 11:42:34 -0400 (EDT) Date: Sat, 19 Aug 2006 16:42:34 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Alexander Leidinger In-Reply-To: <20060819170544.118d2c2b@Magellan.Leidinger.net> Message-ID: <20060819162526.D49007@fledge.watson.org> References: <200608172121.k7HLLUY5095480@repoman.freebsd.org> <20060818184107.B47942@fledge.watson.org> <20060819170544.118d2c2b@Magellan.Leidinger.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: cvs-src@FreeBSD.org, rdivacky@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/compat/linux linux_misc.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2006 15:42:36 -0000 On Sat, 19 Aug 2006, Alexander Leidinger wrote: > Quoting Robert Watson (Fri, 18 Aug 2006 18:47:12 +0100 (BST)): > >> On Thu, 17 Aug 2006, Alexander Leidinger wrote: >> >>> - protect td->td_proc->p_pid with the proc lock in linux_getpid >>> in the amd64 (= non i386) case [1] >> >> Is this necessary? In principle, td->td_proc is static for a live thread >> bound to a process (i.e., in a system call, which the current thread >> presumable is, as long as td == curthread), p_pid is static for a live >> process that isn't exiting (so in a system call is not generally exiting). >> The native FreeBSD getpid() only acquires the process lock when following >> p_pptr, since this can change during a system call (i.e., as a result of >> the parent dying, and the child being re-parented to init(8)). > > Now that you tell me this, I have the impression that I have mixed up p_pid > with p_pptr here... I have to have a look at the code again. In the general case, following many p->p_foo fields does require the process lock, as the process might exit, etc, while you're accessing the fields. The exception for curthread->td_proc relates to fields that are static as long as the process isn't exiting. Fields with this property are marked with (b) in the locking guide in proc.h. Robert N M Watson Computer Laboratory University of Cambridge