cvs commit: src/sys/kern kern_fork.c
David Schultz
das at FreeBSD.ORG
Thu Sep 30 23:32:35 PDT 2004
On Fri, Oct 01, 2004, Brian Fundakowski Feldman wrote:
> On Fri, Oct 01, 2004 at 05:01:29AM +0000, David Schultz wrote:
> > das 2004-10-01 05:01:29 UTC
> >
> > FreeBSD src repository
> >
> > Modified files:
> > sys/kern kern_fork.c
> > Log:
> > Avoid calling _PHOLD(p1) with p2's lock held, since _PHOLD()
> > may block to swap in p1. Instead, call _PHOLD earlier, at a
> > point where the only lock held happens to be p1's.
>
> Since you seem to have a handle on this: how hard do you think it
> would be to make all the [_]PHOLD() consumers able to handle an
> error return?
It wouldn't be hard at all. Other than the files I just touched,
there are only about five uses of [_]PHOLD() that differ in
nontrivial ways.
Another thing that needs to be done is to modify the kern_wait()
path to avoid destroying processes with a nonzero hold count. In
a few places (e.g. procfs), the process being held is not curproc,
so it could go away.
More information about the cvs-all
mailing list