tipc: Prevent crash when broadcast link cannot send to all nodes
authorAllan Stephens <allan.stephens@windriver.com>
Tue, 17 Aug 2010 11:00:08 +0000 (11:00 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Aug 2010 00:31:54 +0000 (17:31 -0700)
Allow TIPC's broadcast link to continue operation when it is unable
to send a message to all nodes in the cluster.  Previously, the
broadcast link attempted to put the broadcast pseudo-bearer into a
blocked state; however, this caused a crash because the associated
bearer structure is only partially initialized.  Further
investigation has revealed some conceptual problems with blocking
the pseudo-bearer; consequently, this functionality has been
disabled for the time being and the undelivered message is
eventually resent by the broadcast link's existing message
retransmission mechanism (if possible).

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/bcast.c

index a008c66..42b1737 100644 (file)
@@ -609,11 +609,13 @@ static int tipc_bcbearer_send(struct sk_buff *buf,
                bcbearer->remains = bcbearer->remains_new;
        }
 
-       /* Unable to reach all targets */
+       /*
+        * Unable to reach all targets (indicate success, since currently
+        * there isn't code in place to properly block & unblock the
+        * pseudo-bearer used by the broadcast link)
+        */
 
-       bcbearer->bearer.publ.blocked = 1;
-       bcl->stats.bearer_congs++;
-       return 1;
+       return TIPC_OK;
 }
 
 /**