diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2011-11-02 15:49:40 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2012-02-24 17:05:14 -0500 |
commit | c422f1bdc3d3f9f637b3d288a6601668e26111d6 (patch) | |
tree | d3e810de3eb96a19afb65c6605af5e00620e3316 /net/tipc/name_table.c | |
parent | c74a46110fd5f97bf9299e68e9ed0453bdacb181 (diff) |
tipc: Simplify enforcement of reserved name type prohibition
Streamlines the logic that prevents an application from binding a
reserved TIPC name type to a port by moving the check to the code
that handles a socket bind() operation. This allows internal TIPC
subsystems to bind a reserved name without having to set an atomic
flag to gain permission to use such a name. (This simplification is
now possible due to the elimination of support for TIPC's native API.)
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc/name_table.c')
-rw-r--r-- | net/tipc/name_table.c | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c index 89eb5621ebba..1196f050e334 100644 --- a/net/tipc/name_table.c +++ b/net/tipc/name_table.c | |||
@@ -114,10 +114,8 @@ struct name_table { | |||
114 | }; | 114 | }; |
115 | 115 | ||
116 | static struct name_table table; | 116 | static struct name_table table; |
117 | static atomic_t rsv_publ_ok = ATOMIC_INIT(0); | ||
118 | DEFINE_RWLOCK(tipc_nametbl_lock); | 117 | DEFINE_RWLOCK(tipc_nametbl_lock); |
119 | 118 | ||
120 | |||
121 | static int hash(int x) | 119 | static int hash(int x) |
122 | { | 120 | { |
123 | return x & (tipc_nametbl_size - 1); | 121 | return x & (tipc_nametbl_size - 1); |
@@ -665,22 +663,7 @@ exit: | |||
665 | return res; | 663 | return res; |
666 | } | 664 | } |
667 | 665 | ||
668 | /** | 666 | /* |
669 | * tipc_nametbl_publish_rsv - publish port name using a reserved name type | ||
670 | */ | ||
671 | |||
672 | int tipc_nametbl_publish_rsv(u32 ref, unsigned int scope, | ||
673 | struct tipc_name_seq const *seq) | ||
674 | { | ||
675 | int res; | ||
676 | |||
677 | atomic_inc(&rsv_publ_ok); | ||
678 | res = tipc_publish(ref, scope, seq); | ||
679 | atomic_dec(&rsv_publ_ok); | ||
680 | return res; | ||
681 | } | ||
682 | |||
683 | /** | ||
684 | * tipc_nametbl_publish - add name publication to network name tables | 667 | * tipc_nametbl_publish - add name publication to network name tables |
685 | */ | 668 | */ |
686 | 669 | ||
@@ -694,11 +677,6 @@ struct publication *tipc_nametbl_publish(u32 type, u32 lower, u32 upper, | |||
694 | tipc_max_publications); | 677 | tipc_max_publications); |
695 | return NULL; | 678 | return NULL; |
696 | } | 679 | } |
697 | if ((type < TIPC_RESERVED_TYPES) && !atomic_read(&rsv_publ_ok)) { | ||
698 | warn("Publication failed, reserved name {%u,%u,%u}\n", | ||
699 | type, lower, upper); | ||
700 | return NULL; | ||
701 | } | ||
702 | 680 | ||
703 | write_lock_bh(&tipc_nametbl_lock); | 681 | write_lock_bh(&tipc_nametbl_lock); |
704 | table.local_publ_count++; | 682 | table.local_publ_count++; |