diff options
Diffstat (limited to 'net/tipc/port.c')
| -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; |
