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.

diff -urN infiniband/ulp/ipoib/ipoib_main.c infiniband-patch/ulp/ipoib/ipoib_main.c
--- infiniband/ulp/ipoib/ipoib_main.c        2006-02-01 13:45:43.000000000 -0800
+++ infiniband-patch/ulp/ipoib/ipoib_main.c        2006-02-16 11:02:24.902458152 -0800
@@ -247,7 +247,6 @@
                if (neigh->ah)
                        ipoib_put_ah(neigh->ah);
                *to_ipoib_neigh(neigh->neighbour) = NULL;
-                neigh->neighbour->ops->destructor = NULL;
                kfree(neigh);
        }

@@ -530,7 +529,6 @@
err:
        *to_ipoib_neigh(skb->dst->neighbour) = NULL;
        list_del(&neigh->list);
-        neigh->neighbour->ops->destructor = NULL;
        kfree(neigh);

        ++priv->stats.tx_dropped;
diff -urN infiniband/ulp/ipoib/ipoib_multicast.c infiniband-patch/ulp/ipoib/ipoib_multicast.c
--- infiniband/ulp/ipoib/ipoib_multicast.c        2006-02-16 11:00:40.379348080 -0800
+++ infiniband-patch/ulp/ipoib/ipoib_multicast.c        2006-02-16 11:02:33.225192904 -0800
@@ -115,7 +115,6 @@
                if (neigh->ah)
                        ipoib_put_ah(neigh->ah);
                *to_ipoib_neigh(neigh->neighbour) = NULL;
-                neigh->neighbour->ops->destructor = NULL;
                kfree(neigh);

         }

Thanks
Shirley Ma
IBM Linux Technology Center
15300 SW Koll Parkway
Beaverton, OR 97006-6063
Phone(Fax): (503) 578-7638
_______________________________________________
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