struct tipc_node *retransmit_to;
 };
 
+static struct bcbearer bcast_bearer;
+static struct bclink bcast_link;
+
+static struct bcbearer *bcbearer = &bcast_bearer;
+static struct bclink *bclink = &bcast_link;
+static struct link *bcl = &bcast_link.link;
 
-static struct bcbearer *bcbearer;
-static struct bclink *bclink;
-static struct link *bcl;
 static DEFINE_SPINLOCK(bc_lock);
 
 /* broadcast-capable node map */
        return 0;
 }
 
-int tipc_bclink_init(void)
+void tipc_bclink_init(void)
 {
-       bcbearer = kzalloc(sizeof(*bcbearer), GFP_ATOMIC);
-       bclink = kzalloc(sizeof(*bclink), GFP_ATOMIC);
-       if (!bcbearer || !bclink) {
-               warn("Broadcast link creation failed, no memory\n");
-               kfree(bcbearer);
-               bcbearer = NULL;
-               kfree(bclink);
-               bclink = NULL;
-               return -ENOMEM;
-       }
-
        INIT_LIST_HEAD(&bcbearer->bearer.cong_links);
        bcbearer->bearer.media = &bcbearer->media;
        bcbearer->media.send_msg = tipc_bcbearer_send;
        sprintf(bcbearer->media.name, "tipc-broadcast");
 
-       bcl = &bclink->link;
        INIT_LIST_HEAD(&bcl->waiting_ports);
        bcl->next_out_no = 1;
        spin_lock_init(&bclink->node.lock);
        bcl->b_ptr = &bcbearer->bearer;
        bcl->state = WORKING_WORKING;
        strlcpy(bcl->name, tipc_bclink_name, TIPC_MAX_LINK_NAME);
-
-       return 0;
 }
 
 void tipc_bclink_stop(void)
 {
        spin_lock_bh(&bc_lock);
-       if (bcbearer) {
-               tipc_link_stop(bcl);
-               bcl = NULL;
-               kfree(bclink);
-               bclink = NULL;
-               kfree(bcbearer);
-               bcbearer = NULL;
-       }
+       tipc_link_stop(bcl);
        spin_unlock_bh(&bc_lock);
+
+       memset(bclink, 0, sizeof(*bclink));
+       memset(bcbearer, 0, sizeof(*bcbearer));
 }
 
 
 
 void tipc_port_list_add(struct port_list *pl_ptr, u32 port);
 void tipc_port_list_free(struct port_list *pl_ptr);
 
-int  tipc_bclink_init(void);
+void tipc_bclink_init(void);
 void tipc_bclink_stop(void);
 struct tipc_node *tipc_bclink_retransmit_to(void);
 void tipc_bclink_acknowledge(struct tipc_node *n_ptr, u32 acked);
 
 int tipc_net_start(u32 addr)
 {
        char addr_string[16];
-       int res;
 
        if (tipc_mode != TIPC_NODE_MODE)
                return -ENOPROTOOPT;
        tipc_named_reinit();
        tipc_port_reinit();
 
-       res = tipc_bclink_init();
-       if (res)
-               return res;
+       tipc_bclink_init();
 
        tipc_k_signal((Handler)tipc_subscr_start, 0);
        tipc_k_signal((Handler)tipc_cfg_init, 0);