[openib-general] Re: Re: [PATCH RESEND] net: Move destructor from neigh->ops to neigh_params

Michael S. Tsirkin mst at mellanox.co.il
Thu Feb 16 11:23:03 PST 2006


Quoting r. Shirley Ma <xma at us.ibm.com>:
> Subject: Re: Re: [PATCH RESEND] net: Move destructor from?neigh->ops to neigh_params
> 
> 
> Hi, Michael,
> 
> What's the current status of this patch?
> 
> I kept hitting the panic when bring the interface up and down. I went through the neighbour and ipoib_neigh code. I think it's not necessary to patch net/core/neighbour.
> 
> The reason we hit this problem is neighbour won't have a pointer to ipoib_neigh if path_free() or mcast_free() being called by the time neighbour has been freed. (ipoib_neigh always has a pointer to a neighbour).
> 
> If neigh_destructor() gets called in this context, in ipoib_neigh_destructor() if ipoib_neigh is NULL it does nothing. So removing neigh->neighbour->ops->destructor = NULL in kfree(neigh) is sufficient to fix this problem. How do you think?
> 
> Here is the patch I used for testing.

With this approach you'll get crashes when the module will get unloaded.
Further, we may get called with neighbour that is not related to ipoib at all.

Shirley, please look under
https://openib.org/svn/trunk/contrib/mellanox/patches
There is a set of various patches for ipoib pending Rolands review there. Most
of them fix various hang/oops conditions or packet leaks.

An approach to fixing this specific problem that does not involve kernel patches
is implemented in patch ipoib_all_neigh_issues_2.patch.

I'll be thankful for more testing.

-- 
Michael S. Tsirkin
Staff Engineer, Mellanox Technologies



More information about the general mailing list