[ofa-general] Re: [PATCH v3] ipoib: do not join broadcast group if interface is brought down

Yossi Etigin yosefe at Voltaire.COM
Fri Jan 9 07:36:52 PST 2009


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



More information about the general mailing list