Roland Dreier wrote:

OK, so the race exists in the current code, but no one has hit it enough
to track it down.  Maybe we can fix it later.

But you ignored my second question about lock nesting problems?

 - R.

How about just this one? We stop the task instead of re-joining the broadcast
if the interface is brought down.
I tested it and it also solves the bug.


-- Index: b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
===================================================================
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c    2009-01-09 
14:02:23.000000000 +0200
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c    2009-01-09 
16:57:50.000000000 +0200
@@ -570,6 +570,9 @@ void ipoib_mcast_join_task(struct work_s
        if (!priv->broadcast) {
                struct ipoib_mcast *broadcast;

+               if (!test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
+                       return;
+
                broadcast = ipoib_mcast_alloc(dev, 1);
                if (!broadcast) {
                        ipoib_warn(priv, "failed to allocate broadcast 
group\n");
--Yossi
_______________________________________________
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