On Thu, Apr 14, 2011 at 05:13:28PM -0400, John Baldwin wrote: > On Sunday, April 10, 2011 1:07:03 pm Konstantin Belousov wrote: > > Author: kib > > Date: Sun Apr 10 17:07:02 2011 > > New Revision: 220526 > > URL: http://svn.freebsd.org/changeset/base/220526 > > > > Log: > > Some callers of proc_reparent() already have the parent process locked. > > Detect the situation and avoid process lock recursion. > > > > Reported by: Fabian Keil <freebsd-listen fabiankeil de> > > > > Modified: > > head/sys/kern/kern_exit.c > > Can we instead assert it is always held and fix callers that don't? Using > locked variables is messy and I'd rather avoid it when possible. We already > require the caller to hold other locks for this operation. > I agree that this is ugly, and proper fix probably would be something else. E.g. struct proc could grow another field that holds a pointer to the ucred it is accounted for, and locked with some global lock.
pgpu5Tssm2kMl.pgp
Description: PGP signature