summaryrefslogtreecommitdiffstats
path: root/net/tipc/port.c
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2008-06-04 17:28:21 -0700
committerDavid S. Miller <davem@davemloft.net>2008-06-04 17:28:21 -0700
commit84b07c1638c36ae937d4930b467001a0d22904e5 (patch)
treeec3d3cdb8ac7a8ba797aa05b163c7b328b7efd2f /net/tipc/port.c
parente83728c7b0ce92e57aa90eb4fc271a29d7a393d5 (diff)
downloadlinux-84b07c1638c36ae937d4930b467001a0d22904e5.tar.gz
linux-84b07c1638c36ae937d4930b467001a0d22904e5.tar.bz2
linux-84b07c1638c36ae937d4930b467001a0d22904e5.zip
tipc: Fix bug in connection setup via native API
This patch fixes a bug that prevented TIPC from receiving a connection setup request message on a native TIPC port. The revised connection setup logic ensures that validation of the source of a connection-based message is skipped if the port is not yet connected to a peer. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/port.c')
-rw-r--r--net/tipc/port.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c
index 2c64ad88e3cf..0bd3e6192c43 100644
--- a/net/tipc/port.c
+++ b/net/tipc/port.c
@@ -842,13 +842,10 @@ static void port_dispatcher_sigh(void *dummy)
tipc_port_unlock(p_ptr);
if (unlikely(!connected)) {
- if (unlikely(published))
+ if (tipc_connect2port(dref, &orig))
goto reject;
- tipc_connect2port(dref,&orig);
- }
- if (unlikely(msg_origport(msg) != peer_port))
- goto reject;
- if (unlikely(msg_orignode(msg) != peer_node))
+ } else if ((msg_origport(msg) != peer_port) ||
+ (msg_orignode(msg) != peer_node))
goto reject;
if (unlikely(!cb))
goto reject;