aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/arp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/arp.c')
-rw-r--r--net/ipv4/arp.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 96a164aa1367..5c29ac5b0c3a 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -177,7 +177,7 @@ struct neigh_table arp_tbl = {
177 .gc_staletime = 60 * HZ, 177 .gc_staletime = 60 * HZ,
178 .reachable_time = 30 * HZ, 178 .reachable_time = 30 * HZ,
179 .delay_probe_time = 5 * HZ, 179 .delay_probe_time = 5 * HZ,
180 .queue_len = 3, 180 .queue_len_bytes = 64*1024,
181 .ucast_probes = 3, 181 .ucast_probes = 3,
182 .mcast_probes = 3, 182 .mcast_probes = 3,
183 .anycast_delay = 1 * HZ, 183 .anycast_delay = 1 * HZ,
@@ -592,16 +592,18 @@ struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip,
592 struct sk_buff *skb; 592 struct sk_buff *skb;
593 struct arphdr *arp; 593 struct arphdr *arp;
594 unsigned char *arp_ptr; 594 unsigned char *arp_ptr;
595 int hlen = LL_RESERVED_SPACE(dev);
596 int tlen = dev->needed_tailroom;
595 597
596 /* 598 /*
597 * Allocate a buffer 599 * Allocate a buffer
598 */ 600 */
599 601
600 skb = alloc_skb(arp_hdr_len(dev) + LL_ALLOCATED_SPACE(dev), GFP_ATOMIC); 602 skb = alloc_skb(arp_hdr_len(dev) + hlen + tlen, GFP_ATOMIC);
601 if (skb == NULL) 603 if (skb == NULL)
602 return NULL; 604 return NULL;
603 605
604 skb_reserve(skb, LL_RESERVED_SPACE(dev)); 606 skb_reserve(skb, hlen);
605 skb_reset_network_header(skb); 607 skb_reset_network_header(skb);
606 arp = (struct arphdr *) skb_put(skb, arp_hdr_len(dev)); 608 arp = (struct arphdr *) skb_put(skb, arp_hdr_len(dev));
607 skb->dev = dev; 609 skb->dev = dev;