From bafa29e34185fb70496bfd604dc9e4071049f023 Mon Sep 17 00:00:00 2001 From: Ying Xue Date: Fri, 9 Jan 2015 15:27:12 +0800 Subject: [PATCH] tipc: make tipc random value aware of net namespace After namespace is supported, each namespace should own its private random value. So the global variable representing the random value must be moved to tipc_net structure. Signed-off-by: Ying Xue Tested-by: Tero Aho Reviewed-by: Jon Maloy Signed-off-by: David S. Miller --- net/tipc/core.c | 6 +----- net/tipc/core.h | 6 +----- net/tipc/discover.c | 2 +- net/tipc/link.c | 2 +- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/net/tipc/core.c b/net/tipc/core.c index 4a8b7955e0e0..674bd2698528 100644 --- a/net/tipc/core.c +++ b/net/tipc/core.c @@ -44,9 +44,6 @@ #include -/* global variables used by multiple sub-systems within TIPC */ -int tipc_random __read_mostly; - /* configurable TIPC parameters */ int tipc_net_id __read_mostly; int sysctl_tipc_rmem[3] __read_mostly; /* min/default/max */ @@ -58,6 +55,7 @@ static int __net_init tipc_init_net(struct net *net) tn->net_id = 4711; tn->own_addr = 0; + get_random_bytes(&tn->random, sizeof(int)); INIT_LIST_HEAD(&tn->node_list); spin_lock_init(&tn->node_list_lock); @@ -109,8 +107,6 @@ static int __init tipc_init(void) TIPC_CRITICAL_IMPORTANCE; sysctl_tipc_rmem[2] = TIPC_CONN_OVERLOAD_LIMIT; - get_random_bytes(&tipc_random, sizeof(tipc_random)); - err = tipc_netlink_start(); if (err) goto out_netlink; diff --git a/net/tipc/core.h b/net/tipc/core.h index 639f562dddf3..817b2e9d4227 100644 --- a/net/tipc/core.h +++ b/net/tipc/core.h @@ -76,14 +76,10 @@ extern int tipc_net_id __read_mostly; extern int sysctl_tipc_rmem[3] __read_mostly; extern int sysctl_tipc_named_timeout __read_mostly; -/* - * Other global variables - */ -extern int tipc_random __read_mostly; - struct tipc_net { u32 own_addr; int net_id; + int random; /* Node table and node list */ spinlock_t node_list_lock; diff --git a/net/tipc/discover.c b/net/tipc/discover.c index 786411dea61c..5b40cb89ff0a 100644 --- a/net/tipc/discover.c +++ b/net/tipc/discover.c @@ -88,7 +88,7 @@ static void tipc_disc_init_msg(struct net *net, struct sk_buff *buf, u32 type, msg = buf_msg(buf); tipc_msg_init(net, msg, LINK_CONFIG, type, INT_H_SIZE, dest_domain); msg_set_non_seq(msg, 1); - msg_set_node_sig(msg, tipc_random); + msg_set_node_sig(msg, tn->random); msg_set_dest_domain(msg, dest_domain); msg_set_bc_netid(msg, tn->net_id); b_ptr->media->addr2msg(msg_media_addr(msg), &b_ptr->addr); diff --git a/net/tipc/link.c b/net/tipc/link.c index 997256769065..193bc1560677 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c @@ -289,7 +289,7 @@ struct tipc_link *tipc_link_create(struct tipc_node *n_ptr, tipc_msg_init(n_ptr->net, msg, LINK_PROTOCOL, RESET_MSG, INT_H_SIZE, l_ptr->addr); msg_set_size(msg, sizeof(l_ptr->proto_msg)); - msg_set_session(msg, (tipc_random & 0xffff)); + msg_set_session(msg, (tn->random & 0xffff)); msg_set_bearer_id(msg, b_ptr->identity); strcpy((char *)msg_data(msg), if_name);