diff options
Diffstat (limited to 'net/tipc/msg.c')
-rw-r--r-- | net/tipc/msg.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c index ab02d0742476..312ef7de57d7 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c | |||
@@ -607,6 +607,23 @@ error: | |||
607 | return false; | 607 | return false; |
608 | } | 608 | } |
609 | 609 | ||
610 | bool tipc_msg_pskb_copy(u32 dst, struct sk_buff_head *msg, | ||
611 | struct sk_buff_head *cpy) | ||
612 | { | ||
613 | struct sk_buff *skb, *_skb; | ||
614 | |||
615 | skb_queue_walk(msg, skb) { | ||
616 | _skb = pskb_copy(skb, GFP_ATOMIC); | ||
617 | if (!_skb) { | ||
618 | __skb_queue_purge(cpy); | ||
619 | return false; | ||
620 | } | ||
621 | msg_set_destnode(buf_msg(_skb), dst); | ||
622 | __skb_queue_tail(cpy, _skb); | ||
623 | } | ||
624 | return true; | ||
625 | } | ||
626 | |||
610 | /* tipc_skb_queue_sorted(); sort pkt into list according to sequence number | 627 | /* tipc_skb_queue_sorted(); sort pkt into list according to sequence number |
611 | * @list: list to be appended to | 628 | * @list: list to be appended to |
612 | * @seqno: sequence number of buffer to add | 629 | * @seqno: sequence number of buffer to add |