Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Nov 2006 16:02:51 -0700
From:      Scott Long <scottl@samsco.org>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   Re: PERFORCE change 110667 for review
Message-ID:  <456F631B.3020100@samsco.org>
In-Reply-To: <20061130222945.GB28271@garage.freebsd.pl>
References:  <200611290826.kAT8Qf13036044@repoman.freebsd.org> <20061130222945.GB28271@garage.freebsd.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
Pawel Jakub Dawidek wrote:
> On Wed, Nov 29, 2006 at 08:26:41AM +0000, Scott Long wrote:
> 
>>http://perforce.freebsd.org/chv.cgi?CH=110667
>>
>>Change 110667 by scottl@scottl-x64 on 2006/11/29 08:26:07
>>
>>	When traversing buses and devices, grab the sim lock at the highest
>>	point, i.e. xptbustraverse(), instead of doing it in disjointed ways
>>	in the lower layers.  One side effect of this is that async callbacks
>>	will be called with the sim/bus lock held already.  Another side
>>	effect is that pass device enumeration that originated in
>>	xpt_finishedconfig() is now decoupled into a taskqueue.
>>
>>Affected files ...
>>
>>.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#45 edit
>>.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#17 edit
>>.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pass.c#14 edit
>>
>>Differences ...
>>
>>==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#45 (text+ko) ====
>>
>>@@ -2684,9 +2684,11 @@
>> 		next_bus = TAILQ_NEXT(bus, links);
>> 
>> 		mtx_unlock(&xsoftc.xpt_lock);
>>+		mtx_lock(bus->sim->mtx);
>> 		retval = tr_func(bus, arg);
>> 		if (retval == 0)
>> 			return(retval);
>>+		mtx_unlock(bus->sim->mtx);
> 
> 
> Don't you leak a lock here on return?
> 

Good catch, thanks!

Scott




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?456F631B.3020100>