X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Ftipc%2Fnet.c;h=074891ad4f09a338b5aab2f9ef567f2fb908fc44;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=a991bf8a7f7493db1ee39b1dc6d1e6fff7e862a1;hpb=3944158a6d33f94668dbd6bdc32ff5c67bb53ec2;p=linux-2.6.git diff --git a/net/tipc/net.c b/net/tipc/net.c index a991bf8a7..074891ad4 100644 --- a/net/tipc/net.c +++ b/net/tipc/net.c @@ -115,8 +115,8 @@ * - A local spin_lock protecting the queue of subscriber events. */ -DEFINE_RWLOCK(tipc_net_lock); -struct network tipc_net = { NULL }; +rwlock_t tipc_net_lock = RW_LOCK_UNLOCKED; +struct network tipc_net = { 0 }; struct node *tipc_net_select_remote_node(u32 addr, u32 ref) { @@ -128,14 +128,13 @@ u32 tipc_net_select_router(u32 addr, u32 ref) return tipc_zone_select_router(tipc_net.zones[tipc_zone(addr)], addr, ref); } -#if 0 + u32 tipc_net_next_node(u32 a) { if (tipc_net.zones[tipc_zone(a)]) return tipc_zone_next_node(a); return 0; } -#endif void tipc_net_remove_as_router(u32 router) { @@ -160,11 +159,14 @@ void tipc_net_send_external_routes(u32 dest) static int net_init(void) { + u32 sz = sizeof(struct _zone *) * (tipc_max_zones + 1); + memset(&tipc_net, 0, sizeof(tipc_net)); - tipc_net.zones = kcalloc(tipc_max_zones + 1, sizeof(struct _zone *), GFP_ATOMIC); + tipc_net.zones = (struct _zone **)kmalloc(sz, GFP_ATOMIC); if (!tipc_net.zones) { return -ENOMEM; } + memset(tipc_net.zones, 0, sz); return TIPC_OK; } @@ -179,7 +181,7 @@ static void net_stop(void) tipc_zone_delete(tipc_net.zones[z_num]); } kfree(tipc_net.zones); - tipc_net.zones = NULL; + tipc_net.zones = 0; } static void net_route_named_msg(struct sk_buff *buf)