X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=net%2Fbridge%2Fbr_forward.c;h=864fbbc7b24d0eb1d9769723cdf385c60aba410c;hb=0f45d7f36b766cb668cebfb5d4d2f67b4a8676ba;hp=8be9f2123e54234f2c7ec1a1904d4e66abde715b;hpb=62ed948cb1405fe95d61d8c6445c102e0c9da0a6;p=powerpc.git diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c index 8be9f2123e..864fbbc7b2 100644 --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c @@ -35,16 +35,20 @@ static inline unsigned packet_length(const struct sk_buff *skb) int br_dev_queue_push_xmit(struct sk_buff *skb) { /* drop mtu oversized packets except gso */ - if (packet_length(skb) > skb->dev->mtu && !skb_shinfo(skb)->gso_size) + if (packet_length(skb) > skb->dev->mtu && !skb_is_gso(skb)) kfree_skb(skb); else { #ifdef CONFIG_BRIDGE_NETFILTER /* ip_refrag calls ip_fragment, doesn't copy the MAC header. */ - nf_bridge_maybe_copy_header(skb); + if (nf_bridge_maybe_copy_header(skb)) + kfree_skb(skb); + else #endif - skb_push(skb, ETH_HLEN); + { + skb_push(skb, ETH_HLEN); - dev_queue_xmit(skb); + dev_queue_xmit(skb); + } } return 0;