diff
 	if (skb_try_coalesce(head, frag, &headstolen, &delta)) {
+		head->truesize += frag->truesize;
+		head->data_len += frag->len;
+		head->len += frag->len;
 		kfree_skb_partial(frag, headstolen);
-		tail = TIPC_SKB_CB(head)->tail;
-		if (!skb_has_frag_list(head))
-			skb_shinfo(head)->frag_list = frag;
-		else
-			tail->next = frag;
-		head->truesize += frag->truesize;
-		head->data_len += frag->len;
-		head->len += frag->len;
-		TIPC_SKB_CB(head)->tail = frag;
+		TIPC_SKB_CB(head)->tail = TIPC_SKB_CB(head)->tail;
 	}
