PERFORCE change 110667 for review
Scott Long
scottl at samsco.org
Thu Nov 30 15:02:59 PST 2006
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 at 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
More information about the p4-projects
mailing list