提交 7ac5459e 编写于 作者: D David S. Miller

[PKTGEN]: Respect hard_header_len of device.

Don't assume 16.

Found by Ben Greear.
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 e048a374
...@@ -1860,13 +1860,14 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev, ...@@ -1860,13 +1860,14 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
*/ */
mod_cur_headers(pkt_dev); mod_cur_headers(pkt_dev);
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC); datalen = (odev->hard_header_len + 16) & ~0xf;
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + datalen, GFP_ATOMIC);
if (!skb) { if (!skb) {
sprintf(pkt_dev->result, "No memory"); sprintf(pkt_dev->result, "No memory");
return NULL; return NULL;
} }
skb_reserve(skb, 16); skb_reserve(skb, datalen);
/* Reserve for ethernet and IP header */ /* Reserve for ethernet and IP header */
eth = (__u8 *) skb_push(skb, 14); eth = (__u8 *) skb_push(skb, 14);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册