--- /dev/null
+From stable-bounces@linux.kernel.org Mon Sep 5 18:47:45 2005
+Date: Mon, 05 Sep 2005 18:47:10 -0700 (PDT)
+To: stable@kernel.org
+From: "David S. Miller" <davem@davemloft.net>
+Cc: herbert@gondor.apana.org.au, kaber@trash.net
+Subject: [NET]: 2.6.13 breaks libpcap (and tcpdump)
+
+From: Herbert Xu <herbert@gondor.apana.org.au>
+
+[NET]: 2.6.13 breaks libpcap (and tcpdump)
+
+Patrick McHardy says:
+
+ Never mind, I got it, we never fall through to the second switch
+ statement anymore. I think we could simply break when load_pointer
+ returns NULL. The switch statement will fall through to the default
+ case and return 0 for all cases but 0 > k >= SKF_AD_OFF.
+
+Here's a patch to do just that.
+
+I left BPF_MSH alone because it's really a hack to calculate the IP
+header length, which makes no sense when applied to the special data.
+
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@osdl.org>
+---
+ net/core/filter.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+Index: linux-2.6.13.y/net/core/filter.c
+===================================================================
+--- linux-2.6.13.y.orig/net/core/filter.c
++++ linux-2.6.13.y/net/core/filter.c
+@@ -182,7 +182,7 @@ int sk_run_filter(struct sk_buff *skb, s
+ A = ntohl(*(u32 *)ptr);
+ continue;
+ }
+- return 0;
++ break;
+ case BPF_LD|BPF_H|BPF_ABS:
+ k = fentry->k;
+ load_h:
+@@ -191,7 +191,7 @@ int sk_run_filter(struct sk_buff *skb, s
+ A = ntohs(*(u16 *)ptr);
+ continue;
+ }
+- return 0;
++ break;
+ case BPF_LD|BPF_B|BPF_ABS:
+ k = fentry->k;
+ load_b:
+@@ -200,7 +200,7 @@ load_b:
+ A = *(u8 *)ptr;
+ continue;
+ }
+- return 0;
++ break;
+ case BPF_LD|BPF_W|BPF_LEN:
+ A = skb->len;
+ continue;