aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/link.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r--net/tipc/link.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 6f4a6d9b0149..3e513daecf80 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -903,8 +903,10 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list,
903 if (unlikely(l->backlog[i].len >= l->backlog[i].limit)) 903 if (unlikely(l->backlog[i].len >= l->backlog[i].limit))
904 return link_schedule_user(l, list); 904 return link_schedule_user(l, list);
905 } 905 }
906 if (unlikely(msg_size(hdr) > mtu)) 906 if (unlikely(msg_size(hdr) > mtu)) {
907 skb_queue_purge(list);
907 return -EMSGSIZE; 908 return -EMSGSIZE;
909 }
908 910
909 /* Prepare each packet for sending, and add to relevant queue: */ 911 /* Prepare each packet for sending, and add to relevant queue: */
910 while (skb_queue_len(list)) { 912 while (skb_queue_len(list)) {
@@ -916,8 +918,10 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list,
916 918
917 if (likely(skb_queue_len(transmq) < maxwin)) { 919 if (likely(skb_queue_len(transmq) < maxwin)) {
918 _skb = skb_clone(skb, GFP_ATOMIC); 920 _skb = skb_clone(skb, GFP_ATOMIC);
919 if (!_skb) 921 if (!_skb) {
922 skb_queue_purge(list);
920 return -ENOBUFS; 923 return -ENOBUFS;
924 }
921 __skb_dequeue(list); 925 __skb_dequeue(list);
922 __skb_queue_tail(transmq, skb); 926 __skb_queue_tail(transmq, skb);
923 __skb_queue_tail(xmitq, _skb); 927 __skb_queue_tail(xmitq, _skb);