diff options
Diffstat (limited to 'net/bridge')
-rw-r--r-- | net/bridge/br_netfilter.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index e060aad8624d..6787bc5197f7 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c | |||
@@ -425,8 +425,7 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb, | |||
425 | 425 | ||
426 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { | 426 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { |
427 | u8 *vhdr = skb->data; | 427 | u8 *vhdr = skb->data; |
428 | skb_pull(skb, VLAN_HLEN); | 428 | skb_pull_rcsum(skb, VLAN_HLEN); |
429 | skb_postpull_rcsum(skb, vhdr, VLAN_HLEN); | ||
430 | skb->nh.raw += VLAN_HLEN; | 429 | skb->nh.raw += VLAN_HLEN; |
431 | } | 430 | } |
432 | return br_nf_pre_routing_ipv6(hook, skb, in, out, okfn); | 431 | return br_nf_pre_routing_ipv6(hook, skb, in, out, okfn); |
@@ -444,8 +443,7 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb, | |||
444 | 443 | ||
445 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { | 444 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) { |
446 | u8 *vhdr = skb->data; | 445 | u8 *vhdr = skb->data; |
447 | skb_pull(skb, VLAN_HLEN); | 446 | skb_pull_rcsum(skb, VLAN_HLEN); |
448 | skb_postpull_rcsum(skb, vhdr, VLAN_HLEN); | ||
449 | skb->nh.raw += VLAN_HLEN; | 447 | skb->nh.raw += VLAN_HLEN; |
450 | } | 448 | } |
451 | 449 | ||