[kernel] r19805 - dists/squeeze-security/linux-2.6/debian/patches/bugfix/all

Dann Frazier dannf at alioth.debian.org
Thu Feb 14 06:53:26 UTC 2013


Author: dannf
Date: Thu Feb 14 06:53:25 2013
New Revision: 19805

Log:
adjust to apply on top of 2.6.32-46

Modified:
   dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/ipv6-discard-overlapping-fragment.patch

Modified: dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/ipv6-discard-overlapping-fragment.patch
==============================================================================
--- dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/ipv6-discard-overlapping-fragment.patch	Thu Feb 14 05:44:30 2013	(r19804)
+++ dists/squeeze-security/linux-2.6/debian/patches/bugfix/all/ipv6-discard-overlapping-fragment.patch	Thu Feb 14 06:53:25 2013	(r19805)
@@ -1,4 +1,4 @@
-commit 70789d7052239992824628db8133de08dc78e593
+ 70789d7052239992824628db8133de08dc78e593
 Author: Nicolas Dichtel <nicolas.dichtel at 6wind.com>
 Date:   Fri Sep 3 05:13:05 2010 +0000
 
@@ -12,17 +12,19 @@
     Signed-off-by: David S. Miller <davem at davemloft.net>
     [dannf: backported to Debian's 2.6.32]
 
-diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
-index 545c414..64cfef1 100644
---- a/net/ipv6/reassembly.c
-+++ b/net/ipv6/reassembly.c
-@@ -149,13 +149,6 @@ int ip6_frag_match(struct inet_frag_queue *q, void *a)
+diff -urpN a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
+--- a/net/ipv6/reassembly.c	2013-02-13 22:04:16.582911820 -0800
++++ b/net/ipv6/reassembly.c	2013-02-13 22:15:23.714382174 -0800
+@@ -148,16 +148,6 @@ int ip6_frag_match(struct inet_frag_queu
  }
  EXPORT_SYMBOL(ip6_frag_match);
  
 -/* Memory Tracking Functions. */
--static void frag_kfree_skb(struct netns_frags *nf, struct sk_buff *skb)
+-static inline void frag_kfree_skb(struct netns_frags *nf,
+-		struct sk_buff *skb, int *work)
 -{
+-	if (work)
+-		*work -= skb->truesize;
 -	atomic_sub(skb->truesize, &nf->mem);
 -	kfree_skb(skb);
 -}
@@ -30,10 +32,10 @@
  void ip6_frag_init(struct inet_frag_queue *q, void *a)
  {
  	struct frag_queue *fq = container_of(q, struct frag_queue, q);
-@@ -346,58 +339,22 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
+@@ -348,58 +338,22 @@ static int ip6_frag_queue(struct frag_qu
+ 		prev = next;
  	}
  
- found:
 -	/* We found where to put this one.  Check for overlap with
 -	 * preceding fragment, and, if needed, align things so that
 -	 * any overlaps are eliminated.
@@ -46,7 +48,7 @@
  	 */
 -	if (prev) {
 -		int i = (FRAG6_CB(prev)->offset + prev->len) - offset;
- 
+-
 -		if (i > 0) {
 -			offset += i;
 -			if (end <= offset)
@@ -57,10 +59,6 @@
 -				skb->ip_summed = CHECKSUM_NONE;
 -		}
 -	}
-+	/* Check for overlap with preceding fragment. */
-+	if (prev &&
-+	    (FRAG6_CB(prev)->offset + prev->len) - offset > 0)
-+		goto discard_fq;
  
 -	/* Look for overlap with succeeding segments.
 -	 * If we can merge fragments, do it.
@@ -93,16 +91,21 @@
 -				fq->q.fragments = next;
 -
 -			fq->q.meat -= free_it->len;
--			frag_kfree_skb(fq->q.net, free_it);
+-			frag_kfree_skb(fq->q.net, free_it, NULL);
 -		}
 -	}
++	/* Check for overlap with preceding fragment. */
++	if (prev &&
++	    (FRAG6_CB(prev)->offset + prev->len) - offset > 0)
++		goto discard_fq;
++
 +	/* Look for overlap with succeeding segment. */
 +	if (next && FRAG6_CB(next)->offset < end)
 +		goto discard_fq;
  
  	FRAG6_CB(skb)->offset = offset;
  
-@@ -436,6 +393,8 @@ found:
+@@ -436,6 +390,8 @@ static int ip6_frag_queue(struct frag_qu
  	write_unlock(&ip6_frags.lock);
  	return -1;
  



More information about the Kernel-svn-changes mailing list