On Thu, Apr 17, 2008 at 10:54:08PM +0100, Robert Watson wrote: > > On Thu, 17 Apr 2008, Pawel Jakub Dawidek wrote: > > >pjd 2008-04-17 19:19:40 UTC > > > > FreeBSD src repository > > > > Modified files: > > sys/kern kern_linker.c > > Log: > > Allow linker_search_symbol_name() to be called with KLD lock held. > > The linker_search_symbol_name() function is used by stack_print() > > and stack_print() can be called from kernel module unload method. > > I'm not sure I'm entirely comfortable with this locking change; conditional > locking of this type is something we've generally tried to eliminate. If > this is for debugging code used in locking sensitive contexts, it is > probably preferable to use one of the _ddb variations on the stack(9) > routines, which bypass locking. Or, in this case, it simply uses the locks > that are already, conveniently, held.
We would need to change all stack(9) consumers to grab KLD_LOCK() before calling its functions, which I don't find very nice. Currently stack(9) functions are mostly called from contexts where KLD lock is not yet held, but in this case where I want to print leaked objects on module unload, the KLD lock is already held. -- Pawel Jakub Dawidek http://www.wheel.pl [EMAIL PROTECTED] http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am!
pgpoX9xTVa99H.pgp
Description: PGP signature
