diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/tipc/link.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c index cce953723ddb..d8b0a22367b6 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c | |||
@@ -1774,6 +1774,7 @@ protocol_check: | |||
1774 | head = link_insert_deferred_queue(l_ptr, | 1774 | head = link_insert_deferred_queue(l_ptr, |
1775 | head); | 1775 | head); |
1776 | if (likely(msg_is_dest(msg, tipc_own_addr))) { | 1776 | if (likely(msg_is_dest(msg, tipc_own_addr))) { |
1777 | int ret; | ||
1777 | deliver: | 1778 | deliver: |
1778 | if (likely(msg_isdata(msg))) { | 1779 | if (likely(msg_isdata(msg))) { |
1779 | tipc_node_unlock(n_ptr); | 1780 | tipc_node_unlock(n_ptr); |
@@ -1798,11 +1799,15 @@ deliver: | |||
1798 | continue; | 1799 | continue; |
1799 | case MSG_FRAGMENTER: | 1800 | case MSG_FRAGMENTER: |
1800 | l_ptr->stats.recv_fragments++; | 1801 | l_ptr->stats.recv_fragments++; |
1801 | if (tipc_link_recv_fragment(&l_ptr->defragm_buf, | 1802 | ret = tipc_link_recv_fragment( |
1802 | &buf, &msg)) { | 1803 | &l_ptr->defragm_buf, |
1804 | &buf, &msg); | ||
1805 | if (ret == 1) { | ||
1803 | l_ptr->stats.recv_fragmented++; | 1806 | l_ptr->stats.recv_fragmented++; |
1804 | goto deliver; | 1807 | goto deliver; |
1805 | } | 1808 | } |
1809 | if (ret == -1) | ||
1810 | l_ptr->next_in_no--; | ||
1806 | break; | 1811 | break; |
1807 | case CHANGEOVER_PROTOCOL: | 1812 | case CHANGEOVER_PROTOCOL: |
1808 | type = msg_type(msg); | 1813 | type = msg_type(msg); |
@@ -2632,7 +2637,9 @@ int tipc_link_recv_fragment(struct sk_buff **pending, struct sk_buff **fb, | |||
2632 | set_fragm_size(pbuf, fragm_sz); | 2637 | set_fragm_size(pbuf, fragm_sz); |
2633 | set_expected_frags(pbuf, exp_fragm_cnt - 1); | 2638 | set_expected_frags(pbuf, exp_fragm_cnt - 1); |
2634 | } else { | 2639 | } else { |
2635 | warn("Link unable to reassemble fragmented message\n"); | 2640 | dbg("Link unable to reassemble fragmented message\n"); |
2641 | buf_discard(fbuf); | ||
2642 | return -1; | ||
2636 | } | 2643 | } |
2637 | buf_discard(fbuf); | 2644 | buf_discard(fbuf); |
2638 | return 0; | 2645 | return 0; |