diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-13 17:50:18 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-13 17:50:18 -0500 |
| commit | d89b218b801fd93ea95880f1c7fde348cbcc51c5 (patch) | |
| tree | cd3c34e1811f9b2bc10ecfb957bf26cbd04c677e /net/tipc/net.c | |
| parent | 80a186074e72e2cd61f6716d90cf32ce54981a56 (diff) | |
| parent | bec68ff1637ca00bb1585a03a7be8a13380084de (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (108 commits)
bridge: ensure to unlock in error path in br_multicast_query().
drivers/net/tulip/eeprom.c: fix bogus "(null)" in tulip init messages
sky2: Avoid rtnl_unlock without rtnl_lock
ipv6: Send netlink notification when DAD fails
drivers/net/tg3.c: change the field used with the TG3_FLAG_10_100_ONLY constant
ipconfig: Handle devices which take some time to come up.
mac80211: Fix memory leak in ieee80211_if_write()
mac80211: Fix (dynamic) power save entry
ipw2200: use kmalloc for large local variables
ath5k: read eeprom IQ calibration values correctly for G mode
ath5k: fix I/Q calibration (for real)
ath5k: fix TSF reset
ath5k: use fixed antenna for tx descriptors
libipw: split ieee->networks into small pieces
mac80211: Fix sta_mtx unlocking on insert STA failure path
rt2x00: remove KSEG1ADDR define from rt2x00soc.h
net: add ColdFire support to the smc91x driver
asix: fix setting mac address for AX88772
ipv6 ip6_tunnel: eliminate unused recursion field from ip6_tnl{}.
net: Fix dev_mc_add()
...
Diffstat (limited to 'net/tipc/net.c')
| -rw-r--r-- | net/tipc/net.c | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/net/tipc/net.c b/net/tipc/net.c index 7906608bf510..f25b1cdb64eb 100644 --- a/net/tipc/net.c +++ b/net/tipc/net.c | |||
| @@ -116,7 +116,8 @@ | |||
| 116 | */ | 116 | */ |
| 117 | 117 | ||
| 118 | DEFINE_RWLOCK(tipc_net_lock); | 118 | DEFINE_RWLOCK(tipc_net_lock); |
| 119 | struct network tipc_net = { NULL }; | 119 | struct _zone *tipc_zones[256] = { NULL, }; |
| 120 | struct network tipc_net = { tipc_zones }; | ||
| 120 | 121 | ||
| 121 | struct tipc_node *tipc_net_select_remote_node(u32 addr, u32 ref) | 122 | struct tipc_node *tipc_net_select_remote_node(u32 addr, u32 ref) |
| 122 | { | 123 | { |
| @@ -158,28 +159,12 @@ void tipc_net_send_external_routes(u32 dest) | |||
| 158 | } | 159 | } |
| 159 | } | 160 | } |
| 160 | 161 | ||
| 161 | static int net_init(void) | ||
| 162 | { | ||
| 163 | memset(&tipc_net, 0, sizeof(tipc_net)); | ||
| 164 | tipc_net.zones = kcalloc(tipc_max_zones + 1, sizeof(struct _zone *), GFP_ATOMIC); | ||
| 165 | if (!tipc_net.zones) { | ||
| 166 | return -ENOMEM; | ||
| 167 | } | ||
| 168 | return 0; | ||
| 169 | } | ||
| 170 | |||
| 171 | static void net_stop(void) | 162 | static void net_stop(void) |
| 172 | { | 163 | { |
| 173 | u32 z_num; | 164 | u32 z_num; |
| 174 | 165 | ||
| 175 | if (!tipc_net.zones) | 166 | for (z_num = 1; z_num <= tipc_max_zones; z_num++) |
| 176 | return; | ||
| 177 | |||
| 178 | for (z_num = 1; z_num <= tipc_max_zones; z_num++) { | ||
| 179 | tipc_zone_delete(tipc_net.zones[z_num]); | 167 | tipc_zone_delete(tipc_net.zones[z_num]); |
| 180 | } | ||
| 181 | kfree(tipc_net.zones); | ||
| 182 | tipc_net.zones = NULL; | ||
| 183 | } | 168 | } |
| 184 | 169 | ||
| 185 | static void net_route_named_msg(struct sk_buff *buf) | 170 | static void net_route_named_msg(struct sk_buff *buf) |
| @@ -282,9 +267,7 @@ int tipc_net_start(u32 addr) | |||
| 282 | tipc_named_reinit(); | 267 | tipc_named_reinit(); |
| 283 | tipc_port_reinit(); | 268 | tipc_port_reinit(); |
| 284 | 269 | ||
| 285 | if ((res = tipc_bearer_init()) || | 270 | if ((res = tipc_cltr_init()) || |
| 286 | (res = net_init()) || | ||
| 287 | (res = tipc_cltr_init()) || | ||
| 288 | (res = tipc_bclink_init())) { | 271 | (res = tipc_bclink_init())) { |
| 289 | return res; | 272 | return res; |
| 290 | } | 273 | } |
