Sfoglia il codice sorgente

Merge branch 'batman-adv/merge' of git://git.open-mesh.org/ecsv/linux-merge

David S. Miller 14 anni fa
parent
commit
429a01a70f
1 ha cambiato i file con 10 aggiunte e 5 eliminazioni
  1. 10 5
      net/batman-adv/unicast.c

+ 10 - 5
net/batman-adv/unicast.c

@@ -50,12 +50,12 @@ static struct sk_buff *frag_merge_packet(struct list_head *head,
 		skb = tfp->skb;
 		skb = tfp->skb;
 	}
 	}
 
 
+	if (skb_linearize(skb) < 0 || skb_linearize(tmp_skb) < 0)
+		goto err;
+
 	skb_pull(tmp_skb, sizeof(struct unicast_frag_packet));
 	skb_pull(tmp_skb, sizeof(struct unicast_frag_packet));
-	if (pskb_expand_head(skb, 0, tmp_skb->len, GFP_ATOMIC) < 0) {
-		/* free buffered skb, skb will be freed later */
-		kfree_skb(tfp->skb);
-		return NULL;
-	}
+	if (pskb_expand_head(skb, 0, tmp_skb->len, GFP_ATOMIC) < 0)
+		goto err;
 
 
 	/* move free entry to end */
 	/* move free entry to end */
 	tfp->skb = NULL;
 	tfp->skb = NULL;
@@ -70,6 +70,11 @@ static struct sk_buff *frag_merge_packet(struct list_head *head,
 	unicast_packet->packet_type = BAT_UNICAST;
 	unicast_packet->packet_type = BAT_UNICAST;
 
 
 	return skb;
 	return skb;
+
+err:
+	/* free buffered skb, skb will be freed later */
+	kfree_skb(tfp->skb);
+	return NULL;
 }
 }
 
 
 static void frag_create_entry(struct list_head *head, struct sk_buff *skb)
 static void frag_create_entry(struct list_head *head, struct sk_buff *skb)