summaryrefslogtreecommitdiffstats
path: root/net/ipv4/arp.c
diff options
context:
space:
mode:
authorRick Jones <rick.jones2@hp.com>2014-09-25 13:55:28 -0400
committerDavid S. Miller <davem@davemloft.net>2014-09-28 17:30:35 -0400
commit825bae5d97d351ddf9720400df133fc4b1bc6a13 (patch)
tree2a6e8fd84737d9d283a92b4820007a3ea39c829a /net/ipv4/arp.c
parent18d0264f630e200772bf236ac5747c47e908501e (diff)
arp: Do not perturb drop profiles with ignored ARP packets
We do not wish to disturb dropwatch or perf drop profiles with an ARP we will ignore. Signed-off-by: Rick Jones <rick.jones2@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/arp.c')
-rw-r--r--net/ipv4/arp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 1a9b99e04465..16acb59d665e 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -953,10 +953,11 @@ static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
953{ 953{
954 const struct arphdr *arp; 954 const struct arphdr *arp;
955 955
956 /* do not tweak dropwatch on an ARP we will ignore */
956 if (dev->flags & IFF_NOARP || 957 if (dev->flags & IFF_NOARP ||
957 skb->pkt_type == PACKET_OTHERHOST || 958 skb->pkt_type == PACKET_OTHERHOST ||
958 skb->pkt_type == PACKET_LOOPBACK) 959 skb->pkt_type == PACKET_LOOPBACK)
959 goto freeskb; 960 goto consumeskb;
960 961
961 skb = skb_share_check(skb, GFP_ATOMIC); 962 skb = skb_share_check(skb, GFP_ATOMIC);
962 if (!skb) 963 if (!skb)
@@ -974,6 +975,9 @@ static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
974 975
975 return NF_HOOK(NFPROTO_ARP, NF_ARP_IN, skb, dev, NULL, arp_process); 976 return NF_HOOK(NFPROTO_ARP, NF_ARP_IN, skb, dev, NULL, arp_process);
976 977
978consumeskb:
979 consume_skb(skb);
980 return 0;
977freeskb: 981freeskb:
978 kfree_skb(skb); 982 kfree_skb(skb);
979out_of_mem: 983out_of_mem: