Date: Thu, 05 Apr 2001 14:41:29 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: John Baldwin <jhb@FreeBSD.org> Cc: Richard Todd <rmtodd@ichotolot.servalan.com>, current@FreeBSD.org, Garrett Wollman <wollman@khavrinen.lcs.mit.edu> Subject: RE: selwakeup() Message-ID: <XFMail.010405144129.jhb@FreeBSD.org> In-Reply-To: <XFMail.010405104534.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 05-Apr-01 John Baldwin wrote: > > On 05-Apr-01 Garrett Wollman wrote: >> <<On Thu, 05 Apr 2001 01:39:35 -0500, Richard Todd >> <rmtodd@ichotolot.servalan.com> 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. As a safety check we should probably zero the pid right before zfree()'ing a proc in wait() however, so that a stale pointer to a free'd process doesn't have a valid pid if we do this. >> -GAWollman -- John Baldwin <jhb@FreeBSD.org> -- 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.010405144129.jhb>