[email protected] wrote:
> Yeah, looks like there's a hole there. By changing the test from:
> 
>       if (neigh) {
>               neigh->cm = NULL;
> 
> to:
> 
>       if (neigh && neigh->cm) {
>               neigh->cm = NULL;
> 
> it can be closed.

It does not close it completely. What if ipoib_neigh_cleanup() is called after
you do ipoib_put_ah(neigh->ah) in the CM code? 

> 
> Generally the fact that we hold a reference should prevent 
> ipoib_neigh_cleanup() from being invoked. 
> 
> But, alas, there are a couple of cases where the neighbour can 
> be have the neigh_cleanup() method invoked even when there are 
> references held (e.g., when the interface goes down). 
> 
> So, yeah, there seems to be a hole there. A smaller hole, but 
> still....
> 

How about checking the refcnt in the neigh_cleanup function, and if it's
not 1 give up the ipoib cleanup?

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

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

Reply via email to