diff
1 int tipc_buf_append(struct sk_buff **headbuf, struct sk_buff **buf)
3 	struct sk_buff *head = *headbuf;
4 	struct sk_buff *frag = *buf;
+ 	bool frag_partially_freed = false;
...
37 		kfree_skb_partial(frag, headstolen);
+ 		frag_partially_freed = true;
...
61 err:
- 	kfree_skb(*buf);
+ 	if (!frag_partially_freed)
+ 		kfree_skb(*buf);
63 	kfree_skb(*headbuf);
