tipc: Convert fatal broadcast sanity check to non-fatal check
authorAllan Stephens <allan.stephens@windriver.com>
Mon, 23 May 2011 17:14:18 +0000 (13:14 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Fri, 24 Jun 2011 20:18:15 +0000 (16:18 -0400)
Modifies the existing broadcast link sanity check that detects an
attempt to send a message off-node when there are no available
destinations so that it no longer causes a kernel panic; instead,
the check now issues a warning and stack trace and then returns
without sending the message anywhere.

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

index fa68d1e9ff4bd370e6db2b086aeb9a37b1651926..759b318b5ffba8a1bb21d0f18c3bf298f7e56300 100644 (file)
@@ -552,12 +552,16 @@ static int tipc_bcbearer_send(struct sk_buff *buf,
        if (likely(!msg_non_seq(buf_msg(buf)))) {
                struct tipc_msg *msg;
 
-               assert(tipc_bcast_nmap.count != 0);
                bcbuf_set_acks(buf, tipc_bcast_nmap.count);
                msg = buf_msg(buf);
                msg_set_non_seq(msg, 1);
                msg_set_mc_netid(msg, tipc_net_id);
                bcl->stats.sent_info++;
+
+               if (WARN_ON(!tipc_bcast_nmap.count)) {
+                       dump_stack();
+                       return 0;
+               }
        }
 
        /* Send buffer over bearers until all targets reached */