diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2011-11-03 19:12:01 +0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2012-02-25 02:05:14 +0400 |
commit | f80c24d9964c8a15c55d1afc2dea327c5eff7d6b (patch) | |
tree | 8a174990875cf1e7bfc8e0dff2272d5488bd7807 /net/tipc | |
parent | c422f1bdc3d3f9f637b3d288a6601668e26111d6 (diff) | |
download | linux-f80c24d9964c8a15c55d1afc2dea327c5eff7d6b.tar.xz |
tipc: Add check to prevent insertion of duplicate name table entries
Adds a new check to TIPC's name table logic to reject any attempt to
create a new name publication that is identical to an existing one.
(Such an attempt will never happen under normal circumstances, but
could arise if another network node malfunctions and issues a duplicate
name publication message.)
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/name_table.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c index 1196f050e334..c2224f98e64f 100644 --- a/net/tipc/name_table.c +++ b/net/tipc/name_table.c @@ -268,6 +268,13 @@ static struct publication *tipc_nameseq_insert_publ(struct name_seq *nseq, } info = sseq->info; + + /* Check if an identical publication already exists */ + list_for_each_entry(publ, &info->zone_list, zone_list) { + if ((publ->ref == port) && (publ->key == key) && + (!publ->node || (publ->node == node))) + return NULL; + } } else { u32 inspos; struct sub_seq *freesseq; |