[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>
This commit is contained in:
parent
6baf1f417d
commit
1198ad002a
|
@ -182,7 +182,7 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen)
|
|||
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, struct sock_filter *filter, int flen)
|
|||
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;
|
||||
|
|
Loading…
Reference in New Issue