|
@@ -80,13 +80,10 @@ static void br_do_proxy_arp(struct sk_buff *skb, struct net_bridge *br,
|
|
|
|
|
|
BR_INPUT_SKB_CB(skb)->proxyarp_replied = false;
|
|
|
|
|
|
- if (dev->flags & IFF_NOARP)
|
|
|
+ if ((dev->flags & IFF_NOARP) ||
|
|
|
+ !pskb_may_pull(skb, arp_hdr_len(dev)))
|
|
|
return;
|
|
|
|
|
|
- if (!pskb_may_pull(skb, arp_hdr_len(dev))) {
|
|
|
- dev->stats.tx_dropped++;
|
|
|
- return;
|
|
|
- }
|
|
|
parp = arp_hdr(skb);
|
|
|
|
|
|
if (parp->ar_pro != htons(ETH_P_IP) ||
|