aboutsummaryrefslogtreecommitdiffstats
path: root/patches/linux-2.6.18/net-gso-6-linear-segmentation.patch
blob: ef30ef42fd300fd712ed2101e2f035ef99ab22c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
diff -pruN ../orig-linux-2.6.18/net/core/skbuff.c ./net/core/skbuff.c
--- ../orig-linux-2.6.18/net/core/skbuff.c	2006-09-20 04:42:06.000000000 +0100
+++ ./net/core/skbuff.c	2007-01-12 18:10:37.000000000 +0000
@@ -1945,7 +1945,7 @@ struct sk_buff *skb_segment(struct sk_bu
 	do {
 		struct sk_buff *nskb;
 		skb_frag_t *frag;
-		int hsize, nsize;
+		int hsize;
 		int k;
 		int size;
 
@@ -1956,11 +1956,10 @@ struct sk_buff *skb_segment(struct sk_bu
 		hsize = skb_headlen(skb) - offset;
 		if (hsize < 0)
 			hsize = 0;
-		nsize = hsize + doffset;
-		if (nsize > len + doffset || !sg)
-			nsize = len + doffset;
+		if (hsize > len || !sg)
+			hsize = len;
 
-		nskb = alloc_skb(nsize + headroom, GFP_ATOMIC);
+		nskb = alloc_skb(hsize + doffset + headroom, GFP_ATOMIC);
 		if (unlikely(!nskb))
 			goto err;