Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / net / tipc / cluster.c
index b46b518..1aed815 100644 (file)
@@ -57,43 +57,43 @@ struct cluster *tipc_cltr_create(u32 addr)
        struct _zone *z_ptr;
        struct cluster *c_ptr;
        int max_nodes; 
+       int alloc;
 
-       c_ptr = kzalloc(sizeof(*c_ptr), GFP_ATOMIC);
-       if (c_ptr == NULL) {
-               warn("Cluster creation failure, no memory\n");
+       c_ptr = (struct cluster *)kmalloc(sizeof(*c_ptr), GFP_ATOMIC);
+       if (c_ptr == NULL)
                return NULL;
-       }
+       memset(c_ptr, 0, sizeof(*c_ptr));
 
        c_ptr->addr = tipc_addr(tipc_zone(addr), tipc_cluster(addr), 0);
        if (in_own_cluster(addr))
                max_nodes = LOWEST_SLAVE + tipc_max_slaves;
        else
                max_nodes = tipc_max_nodes + 1;
-
-       c_ptr->nodes = kcalloc(max_nodes + 1, sizeof(void*), GFP_ATOMIC);
+       alloc = sizeof(void *) * (max_nodes + 1);
+       c_ptr->nodes = (struct node **)kmalloc(alloc, GFP_ATOMIC);
        if (c_ptr->nodes == NULL) {
-               warn("Cluster creation failure, no memory for node area\n");
                kfree(c_ptr);
                return NULL;
        }
-
+       memset(c_ptr->nodes, 0, alloc);  
        if (in_own_cluster(addr))
                tipc_local_nodes = c_ptr->nodes;
        c_ptr->highest_slave = LOWEST_SLAVE - 1;
        c_ptr->highest_node = 0;
        
        z_ptr = tipc_zone_find(tipc_zone(addr));
-       if (!z_ptr) {
+       if (z_ptr == NULL) {
                z_ptr = tipc_zone_create(addr);
        }
-       if (!z_ptr) {
-               kfree(c_ptr->nodes);
+       if (z_ptr != NULL) {
+               tipc_zone_attach_cluster(z_ptr, c_ptr);
+               c_ptr->owner = z_ptr;
+       }
+       else {
                kfree(c_ptr);
-               return NULL;
+               c_ptr = NULL;
        }
 
-       tipc_zone_attach_cluster(z_ptr, c_ptr);
-       c_ptr->owner = z_ptr;
        return c_ptr;
 }