diff options
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/port.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c index 0737680e9266..ebcbc21d8f98 100644 --- a/net/tipc/port.c +++ b/net/tipc/port.c | |||
@@ -588,19 +588,10 @@ void tipc_port_recv_proto_msg(struct sk_buff *buf) | |||
588 | if (!p_ptr) { | 588 | if (!p_ptr) { |
589 | err = TIPC_ERR_NO_PORT; | 589 | err = TIPC_ERR_NO_PORT; |
590 | } else if (p_ptr->publ.connected) { | 590 | } else if (p_ptr->publ.connected) { |
591 | if (port_peernode(p_ptr) != msg_orignode(msg)) | 591 | if ((port_peernode(p_ptr) != msg_orignode(msg)) || |
592 | (port_peerport(p_ptr) != msg_origport(msg))) { | ||
592 | err = TIPC_ERR_NO_PORT; | 593 | err = TIPC_ERR_NO_PORT; |
593 | if (port_peerport(p_ptr) != msg_origport(msg)) | 594 | } else if (msg_type(msg) == CONN_ACK) { |
594 | err = TIPC_ERR_NO_PORT; | ||
595 | if (!err && msg_routed(msg)) { | ||
596 | u32 seqno = msg_transp_seqno(msg); | ||
597 | u32 myno = ++p_ptr->last_in_seqno; | ||
598 | if (seqno != myno) { | ||
599 | err = TIPC_ERR_NO_PORT; | ||
600 | abort_buf = port_build_self_abort_msg(p_ptr, err); | ||
601 | } | ||
602 | } | ||
603 | if (msg_type(msg) == CONN_ACK) { | ||
604 | int wakeup = tipc_port_congested(p_ptr) && | 595 | int wakeup = tipc_port_congested(p_ptr) && |
605 | p_ptr->publ.congested && | 596 | p_ptr->publ.congested && |
606 | p_ptr->wakeup; | 597 | p_ptr->wakeup; |