From aaf43df1772e47331c7f86bb014c0c62f55ccd6f Mon Sep 17 00:00:00 2001 From: Chris Wright Date: Mon, 5 Sep 2005 19:04:24 -0700 Subject: [PATCH] Add fix for libpcap and tcmpdump breakage from Herbert, fwd from DaveM. --- queue/fix-socket-filter-regression.patch | 61 ++++++++++++++++++++++++ queue/series | 1 + 2 files changed, 62 insertions(+) create mode 100644 queue/fix-socket-filter-regression.patch diff --git a/queue/fix-socket-filter-regression.patch b/queue/fix-socket-filter-regression.patch new file mode 100644 index 00000000000..95b225e85ee --- /dev/null +++ b/queue/fix-socket-filter-regression.patch @@ -0,0 +1,61 @@ +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" +Cc: herbert@gondor.apana.org.au, kaber@trash.net +Subject: [NET]: 2.6.13 breaks libpcap (and tcpdump) + +From: Herbert Xu + +[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 +Signed-off-by: David S. Miller +Signed-off-by: Chris Wright +--- + 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; diff --git a/queue/series b/queue/series index 6856e9b6842..8624c914497 100644 --- a/queue/series +++ b/queue/series @@ -3,3 +3,4 @@ aacraid-bad-BUG_ON-fix.patch fix-sk_forward_alloc-underflow-in-tcp_sendmsg.patch fix-pci-rom-mapping.patch pci_assign_unassigned_resources-update.patch +fix-socket-filter-regression.patch -- 2.47.3