Quoting r. Libor Michalek <[EMAIL PROTECTED]>:
> Subject: Re: [PATCH] sdp_conn_put/sdp_conn_hold race
> 
> On Wed, Jul 20, 2005 at 09:44:18PM +0300, Michael S. Tsirkin wrote:
> > Quoting r. Michael S. Tsirkin <[EMAIL PROTECTED]>:
> > > The current sdp_conn_put/sdp_conn_hold implementation
> > > seems to be subject to the following race condition:
> > 
> > Libor, did you have the time to review this patch?
> 
>   Yes, looks good. The only question I had was about making
> sdp_conn_put an inline, and calling to destruct only on the
> last decrement.

conn_put must first do
spin_lock_irqsave(&dev_root_s.sock_lock, flags);

so that would require making dev_root_s extern instead of static.

> Basically split the sdp_conn_put code in
> your patch, where sdp_conn_put is everything before the
> unlock of sock_lock, and destruct is everything after.

How do you mean? It seems unlock of sock_lock is the last operation
in sdp_conn_put. Must be careful not to reintroduce the race if its
changed.

>  Was
> there any reason you didn't do that? Is there a reasont to
> split it like this...

conn_put is done in places where we expect to have
the last reference. If we know its not, we can do _light.
So making it inline will increase code size
and wont save a function call.

>   Looks like all the right places have _light().
> 
> -Libor
> 

Right. How about we merge it, and then its easier to discuss
patches on top of it? BTW, my limited benchmarking showed
no effect on performance.

-- 
MST
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to