aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/ipconfig.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2011-11-17 21:20:04 -0500
committerDavid S. Miller <davem@davemloft.net>2011-11-18 14:37:08 -0500
commit660882432909dbe611f1792eda158188065cb9f1 (patch)
tree101be8ad6357197cff3dcd6daf573dadab2cdd6b /net/ipv4/ipconfig.c
parent505a467b66233fd08ac32fca943100130928bf89 (diff)
ipv4: Remove all uses of LL_ALLOCATED_SPACE
ipv4: Remove all uses of LL_ALLOCATED_SPACE The macro LL_ALLOCATED_SPACE was ill-conceived. It applies the alignment to the sum of needed_headroom and needed_tailroom. As the amount that is then reserved for head room is needed_headroom with alignment, this means that the tail room left may be too small. This patch replaces all uses of LL_ALLOCATED_SPACE in net/ipv4 with the macro LL_RESERVED_SPACE and direct reference to needed_tailroom. This also fixes the problem with needed_headroom changing between allocating the skb and reserving the head room. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ipconfig.c')
-rw-r--r--net/ipv4/ipconfig.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 7f17ba8b0318..915eb5265b2e 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -763,13 +763,15 @@ static void __init ic_bootp_send_if(struct ic_device *d, unsigned long jiffies_d
763 struct sk_buff *skb; 763 struct sk_buff *skb;
764 struct bootp_pkt *b; 764 struct bootp_pkt *b;
765 struct iphdr *h; 765 struct iphdr *h;
766 int hlen = LL_RESERVED_SPACE(dev);
767 int tlen = dev->needed_tailroom;
766 768
767 /* Allocate packet */ 769 /* Allocate packet */
768 skb = alloc_skb(sizeof(struct bootp_pkt) + LL_ALLOCATED_SPACE(dev) + 15, 770 skb = alloc_skb(sizeof(struct bootp_pkt) + hlen + tlen + 15,
769 GFP_KERNEL); 771 GFP_KERNEL);
770 if (!skb) 772 if (!skb)
771 return; 773 return;
772 skb_reserve(skb, LL_RESERVED_SPACE(dev)); 774 skb_reserve(skb, hlen);
773 b = (struct bootp_pkt *) skb_put(skb, sizeof(struct bootp_pkt)); 775 b = (struct bootp_pkt *) skb_put(skb, sizeof(struct bootp_pkt));
774 memset(b, 0, sizeof(struct bootp_pkt)); 776 memset(b, 0, sizeof(struct bootp_pkt));
775 777