From owner-freebsd-current Thu Apr 5 10:47: 1 2001 Delivered-To: freebsd-current@freebsd.org Received: from meow.osd.bsdi.com (meow.osd.bsdi.com [204.216.28.88]) by hub.freebsd.org (Postfix) with ESMTP id 9578F37B424 for ; Thu, 5 Apr 2001 10:46:55 -0700 (PDT) (envelope-from jhb@FreeBSD.org) Received: from laptop.baldwin.cx (john@jhb-laptop.osd.bsdi.com [204.216.28.241]) by meow.osd.bsdi.com (8.11.2/8.11.2) with ESMTP id f35Hk5G81811; Thu, 5 Apr 2001 10:46:05 -0700 (PDT) (envelope-from jhb@FreeBSD.org) Message-ID: X-Mailer: XFMail 1.4.0 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <200104051551.LAA00666@khavrinen.lcs.mit.edu> Date: Thu, 05 Apr 2001 10:45:34 -0700 (PDT) From: John Baldwin To: Garrett Wollman Subject: RE: selwakeup() Cc: current@FreeBSD.org, Richard Todd Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On 05-Apr-01 Garrett Wollman wrote: > < said: > >> If I'm reading this backtrace right, the thread handling the sound >> hardware called selwakeup() (frame #19). This called pfind() (frame >> #18), which tries to lock allproc. > > selwakeup() shouldn't need to call pfind(). Because the process table > is in type-stable memory, it should be sufficient to keep a reference > to the caller's proc structure and check to see whether its pid is the > same one as in the selinfo. The locking that selwakeup() already > needs to do should be sufficient to avoid a race. > > (In 4.4BSD, process structures were not type-stable so this technique > could not have been used.) There are probably several other places that pfind is called that this check should also be adequate for as well. The ones in syscons for example. > -GAWollman -- John Baldwin -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.baldwin.cx/~john/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message