svn commit: r219727 - head/sys/vm
Kostik Belousov
kostikbel at gmail.com
Wed Mar 23 14:34:39 UTC 2011
On Wed, Mar 23, 2011 at 09:45:37AM -0400, John Baldwin wrote:
> On Friday, March 18, 2011 4:40:34 am Julian Elischer wrote:
> > On 3/17/11 11:47 PM, Edward Tomasz Napierala wrote:
> > > Author: trasz
> > > Date: Fri Mar 18 06:47:23 2011
> > > New Revision: 219727
> > > URL: http://svn.freebsd.org/changeset/base/219727
> > >
> > > Log:
> > > In vm_daemon(), when iterating over all processes in the system, skip those
> > > which are not yet fully initialized (i.e. ones with p_state == PRS_NEW).
> > > Without it, we could panic in _thread_lock_flags().
> > >
> > > Note that there may be other instances of FOREACH_PROC_IN_SYSTEM() that
> > > require similar fix.
> >
> > In the past each process was only put on the process list after it was
> > fully set up.
> > Did someone change that recently? that would be "A Bad Thing" (TM).
>
> Err, no, that has never been true. The reason it has to go on the list
> immediately is to reserve the PID against concurrent fork()s.
>
> Hmm, the locking of prs_state is a bit busted it seems. Both the PROC_LOCK()
> and PROC_SLOCK() are supposed to be held when it is written to, but
> PROC_LOCK() is missing in fork1() when moving the state to PRS_NORMAL.
>
> Also, this commit should check against PRS_NORMAL after acquiring the proc
> lock, not before.
In the case of this commit, it does not matter much, I think. The reason
is that all the check want is to make sure that there is at least one
fully initialized thread linked into the process.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-head/attachments/20110323/d1006e74/attachment.pgp
More information about the svn-src-head
mailing list