diff options
author | David S. Miller <davem@davemloft.net> | 2013-11-07 18:30:35 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-11-07 18:30:35 -0500 |
commit | 95ed40196f965177ee0d044ab304e5cab3aee9c1 (patch) | |
tree | 01dd481f7f1aca3d2151abc31b14a2d92ed3a7b8 /net/tipc/node.c | |
parent | b0db7b0c21a014d01be1018db68e78ebf7d4f0d7 (diff) | |
parent | a715b49e79b0924863ff1424f9823cc1b5972322 (diff) |
Merge branch 'tipc_fragmentation'
Erik Hugne says:
====================
tipc: message reassembly using fragment chain
We introduce a new reassembly algorithm that improves performance
and eliminates the risk of causing out-of-memory situations.
v3: -Use skb_try_coalesce, and revert to fraglist if this does not succeed.
-Make sure reassembly list head is uncloned.
v2: -Rebased on Ying's indentation fix.
-Node unlock call in msg_fragmenter case moved from patch #2 to #1.
('continue' with this lock held would cause spinlock recursion if only
patch #1 is used)
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r-- | net/tipc/node.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index 6e6c434872e..25100c0a6fe 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -298,9 +298,10 @@ static void node_lost_contact(struct tipc_node *n_ptr) } n_ptr->bclink.deferred_size = 0; - if (n_ptr->bclink.defragm) { - kfree_skb(n_ptr->bclink.defragm); - n_ptr->bclink.defragm = NULL; + if (n_ptr->bclink.reasm_head) { + kfree_skb(n_ptr->bclink.reasm_head); + n_ptr->bclink.reasm_head = NULL; + n_ptr->bclink.reasm_tail = NULL; } tipc_bclink_remove_node(n_ptr->addr); |