diff
--- a/tipc_buf_append.c
+++ b/tipc_buf_append.c
@@ -21,7 +21,8 @@
 	if (fragid == FIRST_FRAGMENT) {
 		if (unlikely(head))
 			goto err;
-22 		*buf = NULL; 
+22 		kfree_skb(*buf);
+		*buf = NULL;
 		if (skb_has_frag_list(frag) && __skb_linearize(frag))
 			goto err;
 25 		frag = skb_unshare(frag, GFP_ATOMIC);

