int tipc_bclink_init(void)
 {
-       bcbearer = kmalloc(sizeof(*bcbearer), GFP_ATOMIC);
-       bclink = kmalloc(sizeof(*bclink), GFP_ATOMIC);
+       bcbearer = kzalloc(sizeof(*bcbearer), GFP_ATOMIC);
+       bclink = kzalloc(sizeof(*bclink), GFP_ATOMIC);
        if (!bcbearer || !bclink) {
  nomem:
                warn("Multicast link creation failed, no memory\n");
                return -ENOMEM;
        }
 
-       memset(bcbearer, 0, sizeof(struct bcbearer));
        INIT_LIST_HEAD(&bcbearer->bearer.cong_links);
        bcbearer->bearer.media = &bcbearer->media;
        bcbearer->media.send_msg = tipc_bcbearer_send;
        sprintf(bcbearer->media.name, "tipc-multicast");
 
        bcl = &bclink->link;
-       memset(bclink, 0, sizeof(struct bclink));
        INIT_LIST_HEAD(&bcl->waiting_ports);
        bcl->next_out_no = 1;
        spin_lock_init(&bclink->node.lock);
 
        struct node *n_ptr;
         struct node **curr_node;
 
-       n_ptr = kmalloc(sizeof(*n_ptr),GFP_ATOMIC);
+       n_ptr = kzalloc(sizeof(*n_ptr),GFP_ATOMIC);
        if (!n_ptr) {
                warn("Node creation failed, no memory\n");
                return NULL;
                return NULL;
        }
                
-       memset(n_ptr, 0, sizeof(*n_ptr));
        n_ptr->addr = addr;
                 spin_lock_init(&n_ptr->lock);
        INIT_LIST_HEAD(&n_ptr->nsub);
 
 
        /* Allocate subscription object */
 
-       sub = kmalloc(sizeof(*sub), GFP_ATOMIC);
+       sub = kzalloc(sizeof(*sub), GFP_ATOMIC);
        if (!sub) {
                warn("Subscription rejected, no memory\n");
                subscr_terminate(subscriber);
 
        /* Initialize subscription object */
 
-       memset(sub, 0, sizeof(*sub));
        sub->seq.type = htohl(s->seq.type, subscriber->swap);
        sub->seq.lower = htohl(s->seq.lower, subscriber->swap);
        sub->seq.upper = htohl(s->seq.upper, subscriber->swap);