@@ -1030,21 +1030,25 @@ void tipc_link_reset(struct tipc_link *l)
10301030int  tipc_link_xmit (struct  tipc_link  * l , struct  sk_buff_head  * list ,
10311031		   struct  sk_buff_head  * xmitq )
10321032{
1033- 	struct  tipc_msg  * hdr  =  buf_msg (skb_peek (list ));
10341033	struct  sk_buff_head  * backlogq  =  & l -> backlogq ;
10351034	struct  sk_buff_head  * transmq  =  & l -> transmq ;
10361035	struct  sk_buff  * skb , * _skb ;
10371036	u16  bc_ack  =  l -> bc_rcvlink -> rcv_nxt  -  1 ;
10381037	u16  ack  =  l -> rcv_nxt  -  1 ;
10391038	u16  seqno  =  l -> snd_nxt ;
10401039	int  pkt_cnt  =  skb_queue_len (list );
1041- 	int  imp  =  msg_importance (hdr );
10421040	unsigned int   mss  =  tipc_link_mss (l );
10431041	unsigned int   cwin  =  l -> window ;
10441042	unsigned int   mtu  =  l -> mtu ;
1043+ 	struct  tipc_msg  * hdr ;
10451044	bool  new_bundle ;
10461045	int  rc  =  0 ;
1046+ 	int  imp ;
1047+ 
1048+ 	if  (pkt_cnt  <= 0 )
1049+ 		return  0 ;
10471050
1051+ 	hdr  =  buf_msg (skb_peek (list ));
10481052	if  (unlikely (msg_size (hdr ) >  mtu )) {
10491053		pr_warn ("Too large msg, purging xmit list %d %d %d %d %d!\n" ,
10501054			skb_queue_len (list ), msg_user (hdr ),
@@ -1053,6 +1057,7 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list,
10531057		return  - EMSGSIZE ;
10541058	}
10551059
1060+ 	imp  =  msg_importance (hdr );
10561061	/* Allow oversubscription of one data msg per source at congestion */ 
10571062	if  (unlikely (l -> backlog [imp ].len  >= l -> backlog [imp ].limit )) {
10581063		if  (imp  ==  TIPC_SYSTEM_IMPORTANCE ) {
0 commit comments